РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1493 of 1593 menu

Метод reflect.Type.Field

Метод reflect.Type.Field возвращает информацию о поле структуры по его порядковому номеру. В качестве единственного параметра он принимает целочисленный индекс поля. Метод возвращает структуру reflect.StructField, которая содержит всю доступную информацию о поле: его имя, тип, тег и другие метаданные.

Синтаксис

field := t.Field(index)

Пример

Давайте получим информацию о первом поле структуры User:

package main import ( "fmt" "reflect" ) type User struct { Name string Age int } func main() { t := reflect.TypeOf(User{}) field := t.Field(0) fmt.Println("Name:", field.Name) fmt.Println("Type:", field.Type) }

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

"Name: Name" "Type: string"

Пример

Давайте получим информацию о втором поле структуры User и его теге:

package main import ( "fmt" "reflect" ) type User struct { Name string `json:"username"` Age int `json:"user_age"` } func main() { t := reflect.TypeOf(User{}) field := t.Field(1) fmt.Println("Name:", field.Name) fmt.Println("Type:", field.Type) fmt.Println("Tag:", field.Tag) fmt.Println("Tag json:", field.Tag.Get("json")) }

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

"Name: Age" "Type: int" "Tag: json:\"user_age\"" "Tag json: user_age"

Пример

Давайте переберем все поля структуры с помощью метода Field:

package main import ( "fmt" "reflect" ) type Person struct { FirstName string LastName string Age int Email string } func main() { t := reflect.TypeOf(Person{}) numFields := t.NumField() for i := 0; i < numFields; i++ { field := t.Field(i) fmt.Printf("Field %d: %s (%s)\n", i, field.Name, field.Type) } }

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

"Field 0: FirstName (string)" "Field 1: LastName (string)" "Field 2: Age (int)" "Field 3: Email (string)"

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

  • метод reflect.Type.NumField,
    который возвращает количество полей структуры
  • метод reflect.Type.FieldByName,
    который ищет поле по имени
  • тип reflect.StructField,
    который представляет информацию о поле структуры
  • функцию reflect.Value.Field,
    которая получает значение поля по индексу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить