GO语言反射机制

来源:互联网 发布:网络接线盒 编辑:程序博客网 时间:2024/05/16 16:15

反射机制基本和Java等类似,可获取struct或变量的类型 值等信息。获取或修改对象的值时,一定要判断该属性是否为可操作状态,否则会导致错误。

示例代码如下:

package mainimport ("fmt""reflect")///首字母大写表示该字段可导出,并可修改值type User struct {ID   intname string //未导出Age  int}func (u User) Info() {fmt.Println(u)}func GetInfo(o interface{}) {t := reflect.TypeOf(o)fmt.Println(t.Name())v := reflect.ValueOf(o)for i := 0; i < t.NumField(); i++ {f := t.Field(i)fmt.Printf("%s\n", f.Name)if v.Field(i).CanInterface() { //此处name未导出,所以获取Interface的时候会提示错误val := v.Field(i).Interface()fmt.Printf("%s:%v=%v\n", f.Name, f.Type, val)}}}func main() {user1 := User{222, "Charles", 100}GetInfo(user1)}


0 0
原创粉丝点击