Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Создание копии слайса
Если присвоить слайс другой переменной, то будут скопированы лишь поля структуры слайса, а не элементы слайса. В результате будет скопирован указатель на массив и мы просто получим два указателя на один и тот же участок памяти:
var arr1 []int = []int{10, 20, 30}
var arr2 []int = arr1
arr2[0] = 88
fmt.Println(arr1) // [88 20 30]
fmt.Println(arr2) // [88 20 30]
Как видно из результата, значение изменились в обоих слайсах. Но так будет не всегда. Если выполняется перераспределение памяти, то указатели будут ссылаться на разные массивы:
var arr1 []int = []int{10, 20, 30}
var arr2 []int = arr1
arr2 = append(arr2, 40, 50, 60)
arr2[0] = 88
fmt.Println(arr1) // [10 20 30]
fmt.Println(arr2) // [88 20 30 40 50 60]
Для копирования элементов из одного слайса в другой предназначена глобальная функция copy()
. Формат функции:
copy(dst, src []Type) int
Функция копирует элементы из слайса src
в dst
и возвращает количество скопированных элементов. Пример создания копии слайса:
var arr1 []int = []int{10, 20, 30}
var arr2 []int = make([]int, len(arr1))
fmt.Println(copy(arr2, arr1)) // 3
arr2[0] = 88
fmt.Println(arr1) // [10 20 30]
fmt.Println(arr2) // [88 20 30]
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов