English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
GoЯзык программирования или указатель в Golang - это переменная, которая используется для хранения другойПеременнаяадрес памяти. А такжемассивявляется фиксированной длиной последовательностью, используемой для хранения элементов одного типа в памяти.
Вы можете использовать указатель на массив и передать его в функцию в качестве параметра. Чтобы понять этот концепт, давайте приведем пример. В следующей программе мы будем использовать массив из 5 элементов, который содержит указатели на массивыarr。Нам нужно обновить этот массив с помощью функции. Это означает, что массив будет изменен внутри функции (в данном случае это массив{78, 89, 45, 56, 14}),и это будет отражаться в месте вызова. Поэтому здесь мы采用了updatearrayФункция, которая имеет указатель на массив в качестве типа параметра. Используяupdatearray(&arr)Код, мы передаем адрес массива. Внутри функции (*funarr)[4] = 750 или funarr[4] = 750 код использует деструктуризацию для назначения нового значения массиву, которое будет отражаться в исходном массиве. В конце программы будет дан вывод [78 89 45 56 750].
// Golang программа передает указатель на массив // Массив в качестве параметра функции package main import "fmt" // Определение функции func updatearray(funarr *[5]int) { // Используя индексный значения изменить массив (*funarr)[4] = 750 // Вы также можете написать // Эти строки кода // funarr[4] = 750 } func main() { // Получение указателя на массив arr := [5]int{78, 89, 45, 56, 14} // Передача указателя на массив // И выполнения updatearray updatearray(&arr) // Обновленный массив fmt.Println(arr) }
Вывод:
[78 89 45 56 750]
Внимание:В Golang не рекомендуется использовать указатели на массивы в качестве параметров функции, так как код становится сложнее для чтения. Также это не является хорошим способом реализации этой функции. Поэтому вы можете использовать срезы вместо передачи указателей.
// Пример Golang // Использование среза в качестве параметра функции package main import "fmt" func updateslice(funarr []int) { // Обновление значения // В указанном индексе funarr[4] = 750 } func main() { // Определение среза s := [5]int{78, 89, 45, 56, 14} // Передача среза в // Функция updateslice updateslice(s[:]) // 显示 результат fmt.Println(s) }
Вывод:
[78 89 45 56 750]