Метод reflect.Type.Name
Метод reflect.Type.Name возвращает имя типа,
представленного объектом reflect.Type.
Для именованных типов (например, определенных через
type) метод возвращает строку с именем типа.
Для встроенных типов (например, int, string)
метод возвращает строковое представление типа.
Для анонимных типов (например, слайсов, мапов, каналов)
метод возвращает пустую строку.
Синтаксис
t.Name()
Метод не принимает параметров и возвращает строку с именем типа.
Пример
Давайте получим имя типа для пользовательской структуры:
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
}
func main() {
var p Person
t := reflect.TypeOf(p)
res := t.Name()
fmt.Println(res)
}
Результат выполнения кода:
"Person"
Пример
Получим имя типа для встроенного типа string:
package main
import (
"fmt"
"reflect"
)
func main() {
var s string
t := reflect.TypeOf(s)
res := t.Name()
fmt.Println(res)
}
Результат выполнения кода:
"string"
Пример
Проверим, что возвращает метод для анонимного типа:
package main
import (
"fmt"
"reflect"
)
func main() {
slice := []int{1, 2, 3, 4, 5}
t := reflect.TypeOf(slice)
res := t.Name()
fmt.Println(res)
}
Результат выполнения кода:
""
Для слайса метод возвращает пустую строку, так как это анонимный тип.
Пример
Сравним результаты методов Name и Kind:
package main
import (
"fmt"
"reflect"
)
type User struct {
ID int
Name string
}
func main() {
var u User
t := reflect.TypeOf(u)
name := t.Name()
kind := t.Kind()
fmt.Println("Name:", name)
fmt.Println("Kind:", kind)
}
Результат выполнения кода:
"Name: User"
"Kind: struct"
Метод Name возвращает имя типа,
а метод Kind возвращает базовый вид типа.
Смотрите также
-
метод
reflect.Type.Kind,
который возвращает базовый вид типа -
метод
reflect.Type.String,
который возвращает строковое представление типа -
метод
reflect.Type.PkgPath,
который возвращает путь пакета для типа -
функцию
reflect.TypeOf,
которая возвращает тип значения