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

Функция reflect.ArrayOf

Функция reflect.ArrayOf создает reflect.Type, представляющий тип массива с указанной длиной и типом элементов. Первый параметр функции — длина массива (тип int), второй параметр — тип элементов (тип reflect.Type). Функция возвращает reflect.Type, который можно использовать для создания значений массива через reflect.New или для проверки типа через reflect.TypeOf.

Синтаксис

reflect.ArrayOf(length int, elemType reflect.Type) reflect.Type

Пример

Давайте создадим тип массива из 5 элементов типа int и проверим его свойства:

package main import ( "fmt" "reflect" ) func main() { // Create array type of 5 ints arrType := reflect.ArrayOf(5, reflect.TypeOf(0)) fmt.Println(arrType) fmt.Println(arrType.Kind()) fmt.Println(arrType.Len()) fmt.Println(arrType.Elem()) }

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

[5]int array 5 int

Пример

Давайте создадим массив из строк с помощью reflect.ArrayOf и заполним его значениями:

package main import ( "fmt" "reflect" ) func main() { // Create array type of 3 strings arrType := reflect.ArrayOf(3, reflect.TypeOf("")) // Create array value arrValue := reflect.New(arrType).Elem() // Set values arrValue.Index(0).SetString("a") arrValue.Index(1).SetString("b") arrValue.Index(2).SetString("c") fmt.Println(arrValue.Interface()) }

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

[a b c]

Пример

Давайте создадим массив из структур и проверим возможность сравнения:

package main import ( "fmt" "reflect" ) type Person struct { Name string Age int } func main() { // Create array type of 2 Person structs arrType := reflect.ArrayOf(2, reflect.TypeOf(Person{})) // Create array value arrValue := reflect.New(arrType).Elem() // Create Person values p1 := Person{Name: "Alice", Age: 30} p2 := Person{Name: "Bob", Age: 25} // Set values arrValue.Index(0).Set(reflect.ValueOf(p1)) arrValue.Index(1).Set(reflect.ValueOf(p2)) fmt.Println(arrValue.Interface()) }

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

[{Alice 30} {Bob 25}]

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

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