我有这种类型:
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
}
不完全是"底层类型",但对于您的情况,您不想要它,您想要它的Kind
,来自Type.Kind()
:
var t = T("what")
k := reflect.TypeOf(t).Kind()
fmt.Println(k)
可播放的示例:https://play.golang.org/p/M75wsTwUHkv
请注意,Kind并不是"底层类型"的同义词,这并不是一件真正的事情,正如您在这里看到的那样:https://play.golang.org/p/900YGm2BnPV
您可以调用Type。Kind((,它将返回其中一个常量
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)