- 反射的使用
1、对于结构体,我们要输出一个已经初始化的结构体的各个字段的值,可以使用反射来实现。示例如下:
package main
import (
"fmt"
"reflect"
)
type Person struct {
name string
age int
gender string
city string
}
func PrintStruct(v interface{}) {
types := reflect.TypeOf(v)
values := reflect.ValueOf(v)
for i:=0; i<values.NumField(); i++ {
fmt.Printf("%v=%v\n", types.Field(i).Name, values.Field(i))
}
}
func main() {
person := Person{
name: "Jack",
age: 24,
gender: "M",
city: "Shenzhen",
}
fmt.Printf("person type: %T\n", person)
//使用反射弧输出结构体成员信息
PrintStruct(person)
}
运行结果:
person type: main.Person
name=Jack
age=24
gender=M
city=Shenzhen