// jsondemo project main.go
package main
import (
"fmt"
"reflect"
)
type T struct {
A int
B string
}
func main() {
//1
var x float64 = 3.4
fmt.Println("type:", reflect.TypeOf(x))
v := reflect.ValueOf(x) //reflect.Value
fmt.Println("type", v.Type())
fmt.Println("kind is float64:", v.Kind() == reflect.Float64)
fmt.Println("value:", v.Float())
//2
p := reflect.ValueOf(&x)
fmt.Println("type of p:", p.Type())
fmt.Println("settability of p:", p.CanSet())
v = p.Elem()
fmt.Println("settability of v:", v.CanSet())
v.SetFloat(7.1)
fmt.Println(v.Interface())
fmt.Println(x)
//3
t := T{203, "mh203"}
s := reflect.ValueOf(&t).Elem()
typeOfT := s.Type()
for i := 0; i < s.NumField(); i++ {
f := s.Field(i)
fmt.Printf("%d: %s %s = %v\n", i,
typeOfT.Field(i).Name, f.Type(), f.Interface())
}
}
输出:
type: float64
type float64
kind is float64: true
value: 3.4
type of p: *float64
settability of p: false
settability of v: true
7.1
7.1
0: A int = 203
1: B string = mh203
有疑问加站长微信联系(非本文作者)