为什么在 Go 中的 interface{} 中放置一个指针会导致反射丢失类型的名称?

下面的示例显示了当您反映设置为对象 (g) 和指向所述对象 (h) 的指针的接口 {} 时会发生什么。这是设计使然,当我将指针放入接口 {} 时,我是否应该期望我的数据类型丢失或者更确切地说,或者我无法取回数据类型的名称?


包主


导入“fmt”

导入“反射”


类型 Foo 结构 {

    酒吧串

}


功能主(){

    f := Foo{Bar: "FooBar"}

    typeName :=reflect.TypeOf(f).Name()

    fmt.Printf("typeName %v\n", typeName)


    var g 接口{}

    g = f

    typeName = reflect.TypeOf(g).Name()

    fmt.Printf("typeName %v\n", typeName)


    var h 接口{}

    h = &f

    typeName = reflect.TypeOf(h).Name()

    fmt.Printf("typeName %v\n", typeName)

}

输出:


类型名称 Foo

类型名称 Foo

类型名称 

也在:


http://play.golang.org/p/2QuBoDxHfX


缥缈止盈
浏览 171回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go