我有这种类型:
type T string
我可以获取T
对象的基础类型吗?例如:
package main
import (
"fmt"
"reflect"
)
type T string
func main() {
var t = T("what")
tt := reflect.TypeOf(t)
fmt.Println(tt) // prints T, i need string
}
答案 0 :(得分:4)
您可以致电Type.Kind(),这将使您返回these constants之一
fmt.Println(tt.Kind()) // prints string
如果您不知道它是否是指针,则需要额外检查并致电Type.Elem()
var kind reflect.Kind
if tt.Kind() == reflect.Ptr {
kind = tt.Elem().Kind()
} else {
kind = tt.Kind()
}
fmt.Println(kind)
答案 1 :(得分:3)
并非完全是“基础类型”,但是对于您的情况,您不想要它,而是想要Kind
中的Type.Kind()
:
var t = T("what")
k := reflect.TypeOf(t).Kind()
fmt.Println(k)
可播放的示例:https://play.golang.org/p/M75wsTwUHkv
请注意,种类不是与“底层类型”的同义词,这并不是什么东西,您可以在此处看到:https://play.golang.org/p/900YGm2BnPV