Как передать указатель на массив в функцию golang?

Пользователь

от roma , в категории: Golang , 3 месяца назад

Как передать указатель на массив в функцию golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от dmitrypro77 , 2 месяца назад

@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)
   }
}
Всегда открыт для интересных проектов. Ссылки на мои соц. сети в профиле.