Метод reflect.Type.Name

Метод reflect.Type.Name возвращает имя типа, представленного объектом reflect.Type. Для именованных типов (например, определенных через type) метод возвращает строку с именем типа. Для встроенных типов (например, int, string) метод возвращает строковое представление типа. Для анонимных типов (например, слайсов, мапов, каналов) метод возвращает пустую строку.

Синтаксис

got.Name()

Метод не принимает параметров и возвращает строку с именем типа.

Пример

Давайте получим имя типа для пользовательской структуры:

gopackage 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)
}

Результат выполнения кода:

go"Person"

Пример

Получим имя типа для встроенного типа string:

gopackage main

import (
  "fmt"
  "reflect"
)

func main() {
  var s string
  t := reflect.TypeOf(s)
  res := t.Name()
  fmt.Println(res)
}

Результат выполнения кода:

go"string"

Пример

Проверим, что возвращает метод для анонимного типа:

gopackage main

import (
  "fmt"
  "reflect"
)

func main() {
  slice := []int{1, 2, 3, 4, 5}
  t := reflect.TypeOf(slice)
  res := t.Name()
  fmt.Println(res)
}

Результат выполнения кода:

go""

Для слайса метод возвращает пустую строку, так как это анонимный тип.

Пример

Сравним результаты методов Name и Kind:

gopackage 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)
}

Результат выполнения кода:

go"Name: User"
"Kind: struct"

Метод Name возвращает имя типа, а метод Kind возвращает базовый вид типа.

Смотрите также

  • метод reflect.Type.Kind,
    который возвращает базовый вид типа
  • метод reflect.Type.String,
    который возвращает строковое представление типа
  • метод reflect.Type.PkgPath,
    который возвращает путь пакета для типа
  • функцию reflect.TypeOf,
    которая возвращает тип значения