是否可以在golang中使用反射来获取用户定义类型的底层类型?
我有这种类型:是否可以在golang中使用反射来获取用户定义类型的底层类型?,go,Go,我有这种类型: 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 } 你可以打电话,这会给你一个 如果你不知道它是否是指针,你需
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与“底层类型”不是同义词,而“底层类型”并不是一个真正的东西,正如您在这里所看到的:不完全是“底层类型”,但对于您的情况,您不希望它,您希望它来自:
可播放示例:
注意,Kind与“底层类型”并不是同义词,而“底层类型”并不是一个真正的东西,正如您在这里看到的:如果
t
属于*t
类型,那么我仍然可以访问“底层类型”吗?i、 e.string
和notptr
是。看见如果t
属于*t
类型,我仍然可以访问“基础类型”吗?i、 e.string
和notptr
是。看见请参阅相关:。请参阅相关:。
fmt.Println(tt.Kind()) // prints string
var kind reflect.Kind
if tt.Kind() == reflect.Ptr {
kind = tt.Elem().Kind()
} else {
kind = tt.Kind()
}
fmt.Println(kind)
var t = T("what")
k := reflect.TypeOf(t).Kind()
fmt.Println(k)