Back to questions
Junior — Middle
77
Можно ли добавлять элементы к слайсу, переданному в функцию в качестве аргумента?
Answer from AI
sobes.tech AI
Да, можно добавлять элементы к слайсу, переданному в функцию, но важно понимать, что слайс в Go — это структура, содержащая указатель на массив, длину и ёмкость.
Если в функции вы используете append и результат присваиваете локальной переменной, то изменения не повлияют на исходный слайс вне функции, если только не вернуть новый слайс или не передать указатель на слайс.
Пример:
func addElement(s []int) []int {
s = append(s, 42) // добавляем элемент
return s
}
func main() {
s := []int{1, 2, 3}
s = addElement(s) // нужно присвоить обратно
fmt.Println(s) // [1 2 3 42]
}
Если нужно изменить слайс внутри функции без возврата, можно передать указатель:
func addElementPtr(s *[]int) {
*s = append(*s, 42)
}
func main() {
s := []int{1, 2, 3}
addElementPtr(&s)
fmt.Println(s) // [1 2 3 42]
}