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

Функция reflect.SliceOf

Функция reflect.SliceOf принимает один параметр — тип элементов, из которых должен состоять слайс, и возвращает тип reflect.Type, представляющий слайс этого типа. Это позволяет динамически создавать типы слайсов во время выполнения программы.

Синтаксис

reflect.SliceOf(t reflect.Type) reflect.Type

Пример

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

package main import ( "fmt" "reflect" ) func main() { t := reflect.TypeOf(0) sliceType := reflect.SliceOf(t) fmt.Println(sliceType) }

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

"[]int"

Пример

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

package main import ( "fmt" "reflect" ) type Person struct { Name string Age int } func main() { t := reflect.TypeOf(Person{}) sliceType := reflect.SliceOf(t) fmt.Println(sliceType) }

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

"[]main.Person"

Пример

Используем reflect.SliceOf вместе с reflect.New для создания нового слайса динамического типа:

package main import ( "fmt" "reflect" ) func main() { t := reflect.TypeOf("") sliceType := reflect.SliceOf(t) slicePtr := reflect.New(sliceType) slice := slicePtr.Elem() slice = reflect.Append(slice, reflect.ValueOf("hello")) slice = reflect.Append(slice, reflect.ValueOf("world")) fmt.Println(slice.Interface()) }

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

[hello world]

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

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