@roma Используйте & символ чтобы передать указатель на массив в функцию на Golang, в этом примере Вы можете видеть что изменяем массив(переворачиваем) без возвращения значения из функции:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
package main import ( "fmt" "reflect" ) func main() { numbers := []int{1, 2, 3} reverseArray(&numbers) // Вывод: [3 2 1] fmt.Println(numbers) } func reverseArray(arr *[]int) { size := reflect.ValueOf(*arr).Len() swap := reflect.Swapper(*arr) for i, j := 0, size-1; i < j; i, j = i+1, j-1 { swap(i, j) } } |
@roma
В Go указатель на массив передается похожим образом, как и в C. Для этого используется синтаксис указателей и указателей на массивы.
Вот пример, который демонстрирует, как передать указатель на массив в функцию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package main import "fmt" // Функция, которая принимает указатель на массив int и его размер func printArray(array *[5]int, size int) { for i := 0; i < size; i++ { fmt.Printf("%d ", (*array)[i]) } } func main() { // Создаем массив и передаем его указатель в функцию array := [5]int{1, 2, 3, 4, 5} printArray(&array, len(array)) } |
В этом примере функция printArray
принимает указатель на массив array
и его размер size
. В функции мы используем указатель на массив, чтобы вывести каждый элемент массива.
В функции main
мы создаем массив array
и передаем его указатель и размер функции printArray
.
Обратите внимание, что в функции printArray
мы используем (*array)[i]
, чтобы получить доступ к элементу массива по индексу i
. Также важно помнить, что в Go массивы передаются по значению, а не по ссылке. Поэтому в функции мы работаем с указателем на массив, чтобы иметь возможность изменять его содержимое.