【发布时间】:2016-06-17 21:16:16
【问题描述】:
我发现这个问题的答案很好:
How to find a type of a object in Golang?
我玩弄了答案,并尝试以相同的方式获取结构的名称:
package main
import (
"fmt"
"reflect"
)
type Ab struct {
}
func getType(myvar interface{}) string {
return reflect.TypeOf(myvar).Name()
}
func main() {
fmt.Println("Hello, playground")
tst := "string"
tst2 := 10
tst3 := 1.2
tst4 := new(Ab)
fmt.Println(getType(tst))
fmt.Println(getType(tst2))
fmt.Println(getType(tst3))
fmt.Println(getType(tst4))
}
去游乐场:http://play.golang.org/p/tD8mygvETH
但是输出是:
Hello, playground
string
int
float64
Program exited.
预期的输出是:
Hello, playground
string
int
float64
Ab
Program exited.
我试图通过阅读文档来弄清楚,但没有找到关于此的问题。所以,很抱歉这个非常笼统的问题,但是:
什么原因,reflect.TypeOf().Name() 不适用于(这个)结构?
【问题讨论】:
-
似乎如果你做 Ab{},而不是 new(Ab) 你会得到预期的结果
标签: go struct reflection types