У меня есть этот тип:
type T string
Могу ли я получить базовый тип объекта T? Например:
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():
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)