Метод reflect.Type.String

Метод reflect.Type.String возвращает строковое представление типа. Этот метод полезен для отладки, логирования и генерации кода, когда необходимо получить читаемое описание типа во время выполнения программы. Метод вызывается на объекте reflect.Type и возвращает строку, которая описывает тип в формате, понятном для человека.

Синтаксис

gotype.String()

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

Пример

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

gopackage main

import (
  "fmt"
  "reflect"
)

func main() {
  var num int = 42
  var str string = "hello"
  var slice []int = []int{1, 2, 3}
  var person struct{ Name string }

  fmt.Println(reflect.TypeOf(num).String())
  fmt.Println(reflect.TypeOf(str).String())
  fmt.Println(reflect.TypeOf(slice).String())
  fmt.Println(reflect.TypeOf(person).String())
}

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

go"int"
"string"
"[]int"
"struct { Name string }"

Пример

Метод String возвращает строковое представление, которое включает имя пакета для пользовательских типов:

gopackage main

import (
  "fmt"
  "reflect"
)

type MyInt int
type User struct {
  ID   int
  Name string
}

func main() {
  var mi MyInt = 10
  var u User = User{ID: 1, Name: "Alice"}

  fmt.Println(reflect.TypeOf(mi).String())
  fmt.Println(reflect.TypeOf(u).String())
}

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

go"main.MyInt"
"main.User"

Пример

Для указателей и сложных типов метод возвращает соответствующее строковое представление:

gopackage main

import (
  "fmt"
  "reflect"
)

func main() {
  var ptr *int
  var m map[string]int
  var ch chan bool

  fmt.Println(reflect.TypeOf(ptr).String())
  fmt.Println(reflect.TypeOf(m).String())
  fmt.Println(reflect.TypeOf(ch).String())
}

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

go"*int"
"map[string]int"
"chan bool"

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

  • метод reflect.Type.Kind,
    который возвращает базовый вид типа
  • метод reflect.Type.Name,
    который возвращает имя типа
  • функцию reflect.TypeOf,
    которая возвращает тип значения
  • функцию reflect.ValueOf,
    которая возвращает значение в виде reflect.Value