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

Функция reflect.Append

Функция reflect.Append добавляет значение к срезу и возвращает новый срез того же типа. Первый параметр функции — значение типа reflect.Value, представляющее срез. Второй параметр — значение, которое необходимо добавить, также типа reflect.Value. Если тип добавляемого значения не соответствует типу элементов среза, возникает паника. Функция возвращает новое значение reflect.Value, представляющее обновленный срез.

Синтаксис

reflect.Append(slice, elem)

Пример

Давайте добавим строку в срез строк:

package main import ( "fmt" "reflect" ) func main() { s := []string{"a", "b", "c"} sliceVal := reflect.ValueOf(s) elemVal := reflect.ValueOf("d") newSliceVal := reflect.Append(sliceVal, elemVal) res := newSliceVal.Interface().([]string) fmt.Println(res) }

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

[a b c d]

Пример

Теперь добавим число в срез целых чисел:

package main import ( "fmt" "reflect" ) func main() { nums := []int{1, 2, 3, 4} sliceVal := reflect.ValueOf(nums) elemVal := reflect.ValueOf(5) newSliceVal := reflect.Append(sliceVal, elemVal) res := newSliceVal.Interface().([]int) fmt.Println(res) }

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

[1 2 3 4 5]

Пример

Если попытаться добавить элемент неправильного типа, программа завершится паникой:

package main import ( "fmt" "reflect" ) func main() { s := []string{"a", "b"} sliceVal := reflect.ValueOf(s) elemVal := reflect.ValueOf(42) // неправильный тип newSliceVal := reflect.Append(sliceVal, elemVal) res := newSliceVal.Interface().([]string) fmt.Println(res) }

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

panic: reflect: call of reflect.Append on string Value

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

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