Как создать переменную-указатель в Go или Golang?

Первоначально было опубликовано здесь!

Чтобы создать переменную-указатель в Go или Golang, вы можете использовать ключевое слово var, за которым следует имя переменной-указателя, затем символ * (звездочка) и, наконец, тип переменной, адрес которой вам нужно хранить в памяти, без пробелов.

TL;DR

package main

import "fmt"

func main() {
    // a simple variable
    name := "John Doe"

    // create a pointer variable to hold the
    // memory address of the `name` variable
    // using the `var` keyword, followed by the pointer variable name,
    // then the `*` symbol and then the type of the
    // variable to hold the memory address of
    var nameAddr *string

    // assign the memory address of the `name` variable
    // to the `nameAddr` pointer variable using
    // the `&` symbol
    nameAddr = &name

    // log the memory address
    fmt.Println(nameAddr) // 0xc000014250 <- this is the address in my system, yours may be different
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Например, допустим, у нас есть переменная name, имеющая string типа John Doe,

package main

func main(){
    // a simple variable
    name := "John Doe"
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Теперь создадим переменную-указатель для хранения адреса памяти переменной name. Назовем переменную-указатель nameAddr.

Это можно сделать следующим образом,

package main

func main(){
    // a simple variable
    name := "John Doe"

    // create a pointer variable to hold the
    // memory address of the `name` variable
    // using the `var` keyword, followed by the pointer variable name,
    // then the `*` symbol and then the type of the
    // variable to hold the memory address of
    var nameAddr *string
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Как видно из приведенного выше кода, мы использовали ключевое слово var, за которым следует имя переменной-указателя nameAddr, затем символ * и тип string без пробелов. Мы использовали тип string, поскольку хотим сохранить в памяти адрес переменной name, которая имеет тип string.

Наконец, чтобы присвоить адрес памяти переменной name, мы можем использовать символ & (амперсанд) перед переменной name, что даст нам адрес памяти переменной name. Затем мы можем присвоить это значение переменной nameAddr с помощью оператора = (присваивание).

Это можно сделать следующим образом,

package main

func main(){
    // a simple variable
    name := "John Doe"

    // create a pointer variable to hold the
    // memory address of the `name` variable
    // using the `var` keyword, followed by the pointer variable name,
    // then the `*` symbol and then the type of the
    // variable to hold the memory address of
    var nameAddr *string

    // assign the memory address of the `name` variable
    // to the `nameAddr` pointer variable using
    // the `&` symbol
    nameAddr = &name
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Теперь запишем адрес памяти переменной name с помощью переменной-указателя nameAddr на терминал следующим образом,

package main

import "fmt"

func main() {
    // a simple variable
    name := "John Doe"

    // create a pointer variable to hold the
    // memory address of the `name` variable
    // using the `var` keyword, followed by the pointer variable name,
    // then the `*` symbol and then the type of the
    // variable to hold the memory address of
    var nameAddr *string

    // assign the memory address of the `name` variable
    // to the `nameAddr` pointer variable using
    // the `&` symbol
    nameAddr = &name

    // log the memory address
    fmt.Println(nameAddr) // 0xc000014250 <- this is the address in my system, yours may be different
}
Вход в полноэкранный режим Выйти из полноэкранного режима

Мы успешно создали переменную-указатель в Go. Ура 🥳!

Посмотрите приведенный выше код в реальном времени в The Go Playground.

На этом все 😃.

Не стесняйтесь поделиться, если вы нашли это полезным 😃.


Оцените статью
devanswers.ru
Добавить комментарий