Golang 反射

来源:互联网 发布:亿网备案域名 编辑:程序博客网 时间:2024/05/29 19:50

    • 反射
      • 反射三法则
        • 从接口值到反射对象
        • 从反射对象到接口值
        • 只能修改值是settable的反射对象的值
    • 接口
    • nil
    • 参考

反射

反射三法则

从接口值到反射对象

package mainimport (    "fmt"    "reflect")func main() {    var x float64 = 3.4    v := reflect.ValueOf(x)    fmt.Println("type:", v.Type())    fmt.Println("kind is float64:", v.Kind() == reflect.Float64)    fmt.Println("value:", v.Float())}

从反射对象到接口值

package mainimport (    "fmt"    "reflect")func main() {    var x float64 = 3.4    v := reflect.ValueOf(x)    fmt.Println(v.Interface())}

只能修改值是settable的反射对象的值

package mainimport (    "fmt"    "reflect")func main() {    var x float64 = 3.4    p := reflect.ValueOf(&x) // Note: take the address of x.    fmt.Println("type of p:", p.Type())    fmt.Println("settability of p:", p.CanSet())    v :=p.Elem()//Elem 返回指针p指向的值    fmt.Println("settability of v:", v.CanSet())    v.SetFloat(7.1)    fmt.Println(v.Interface())    fmt.Println(x)//now original x is changed}

接口

nil

参考

官方指导
reflect包
说话的白菜
博客

0 0
原创粉丝点击