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

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

контрольные операторы в Go

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

структуры в Go

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

строки (String) в Go

указатели в Go

интерфейсы в Go

конкурентоспособность в Go

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

другие полезные статьи по Go

указатели в языке программирования Go

язык программирования Goуказатель - это переменная, которая используется для хранения адреса другой переменной. Вы также можете передавать адрес переменной, какпеременнаятакже передаем указатель функции. Есть два способа выполнения следующей операции:

  • создаем указатель и передаем его функции

  • передавать адрес памяти переменной

создаем указатель и передаем его функции

В следующем программном коде мы используем функциюptf, у функции есть параметр указателя типа int, что означает, что функция принимает только параметры типа указателя. Кроме того, функция изменяет значение переменнойxначальном значенииxс значением 100. Но после вызова функции значение изменяется на 748, как показано в выводе.

// Go-программа создает указатель
// и передавать его функции
package main
import "fmt"
// принимать указатель в качестве параметра
func ptf(a *int) {
    // указатель
    *a = 748
}
func main() {
    // обычная переменная
    var x = 100
    fmt.Printf("Значение x до вызова функции: %d\n", x)
    // получить переменную указателя
    // и назначить адрес
    var pa *int = &x
    // через следующий способ вызова функции
    // передавать указатель функции
    ptf(pa)
    fmt.Printf("Значение x после вызова функции: %d\n", x)
}

Вывод:

Значение x до вызова функции: 100
Значение x после вызова функции: 748

передавать адрес переменной функции вызова

Рассмотрим следующий программный код, в котором мы не создаем указатель для хранения переменнойxадрес, то есть в данном программном кодеpa. Мы напрямую передаемxадрес передается функции вызова, вызов которой аналогичен вышеуказанному методу.

package main
import "fmt"
// указатель типа int в качестве параметра
func ptf(a *int) {
    *a = 748
}
func main() {
    var x = 100
    fmt.Printf("Значение x до вызова функции: %d\n", x)
    // через вызов функции
    // передача адреса
    // переменная x
    ptf(&x)
    fmt.Printf("Значение x после вызова функции: %d\n", x)
}

Вывод:

Значение x до вызова функции: 100
Значение x после вызова функции: 748

Внимание:Вы также можете использовать краткий оператор объявления переменных и указателей (:=) для объявления переменных и указателей в данном программном коде.