例如, x interface{}给出。string如果它是复合类型(结构或指向结构的指针)或“简单”类型(如, int,float等),如何确定(可能使用反射) ?
1 回答
HUWWW
TA贡献1874条经验 获得超12个赞
您可以使用 package reflect
,获取其 type 并检查其kind。如果是指针类型,则“导航”到指向的类型:
func isStruct(i interface{}) bool {
t := reflect.TypeOf(i)
if t.Kind() == reflect.Ptr {
t = t.Elem()
}
return t.Kind() == reflect.Struct
}
测试它:
fmt.Println(isStruct("text"))
fmt.Println(isStruct(1))
fmt.Println(isStruct(image.Point{}))
fmt.Println(isStruct(&image.Point{}))
输出(在Go Playground上尝试):
false
false
true
true
- 1 回答
- 0 关注
- 105 浏览
添加回答
举报
0/150
提交
取消