【发布时间】:2018-10-26 18:48:00
【问题描述】:
在下面的代码中,为了显示预期的类型,我必须创建一个新对象并在其上调用reflect.TypeOf。
package main
import (
"fmt"
"reflect"
)
type X struct {
name string
}
func check(something interface{}) {
if _, ok := something.(*X); !ok {
fmt.Printf("Expecting type %v, got %v\n",
reflect.TypeOf(X{}), reflect.TypeOf(something))
}
}
func main()
check(struct{}{})
}
也许创建对象不是开销,但我仍然很想知道更好的方法。 java中有X.getName()或X.getSimpleName()之类的东西吗?
【问题讨论】:
-
使用
reflect.TypeOf((*X)(nil)).Elem()避免创建X的值。要打印值的类型,您可以使用fmt.Printf("%T", something)。 -
感谢
%T。您能否将其发布为答案?
标签: pointers go struct reflection types