反射练习                  
        
          
          
            |
            
              
              字数总计:
              640
              |
              
              阅读时长:
              1分钟
              |
              
                阅读量:
                183
              
          
         
       
              
        这篇文章距离最后更新已过358          天,如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
        
       
      
        
      - 定义一个结构体
- 给结构体赋值
- 用反射获取结构体的下标、结构体名称、类型、值
- 改变结构体的值
type T struct { #定义结构体
    A int
    B string
}
func main() {
    t := T{23, "Murphy"} #给结构体赋值
    s := reflect.ValueOf(&t).Elem() #获取指向t的指针的具体值的封装
    typeOfT := s.Type() #结构体的类型
    for i := 0; i < s.NumField(); i++ { #结构体字段数
        f := s.Field(i) #获取结构体的第i个字段
        fmt.Printf("%d: %s %s = %v\n", i,
            typeOfT.Field(i).Name, f.Type(), f.Interface()) #依次输出 结构体下标、字段名,字段类型,值
    }
    s.Field(0).SetInt(77)
    s.Field(1).SetString("Sunset Strp")
    fmt.Println("t is now", t)
}
0: A int = 23
1: B string = Murphy
t is now {77 Sunset Strp}