是否可以在 golang 中使用反射来获取用户定义类型的基础类型?

Ale*_*lex 2 go

我有这种类型:

type T string
Run Code Online (Sandbox Code Playgroud)

我可以获得 对象的基础类型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
}
Run Code Online (Sandbox Code Playgroud)

Adr*_*ian 5

不完全是“底层类型”,但对于你的情况,你不想要那个,你想要它的Kind, from Type.Kind()

var t = T("what")
k := reflect.TypeOf(t).Kind()
fmt.Println(k)
Run Code Online (Sandbox Code Playgroud)

可玩的示例: https: //play.golang.org/p/M75wsTwUHkv

请注意,Kind并不是“底层类型”的同义词,这实际上并不是一个东西,正如您在此处看到的: https: //play.golang.org/p/900YGm2BnPV