English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang базовый учебник

Golang управляющие структуры

Golang функции и методы

Golang структуры

Golang срезы и массивы

Golang строки (String)

Golang указатели

Golang интерфейсы

Golang параллелизм

Golang исключения (Error)

Golang другие вопросы

Массивы и указатели в Go

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]