Как изменить значение переменной с помощью указателя в Go или Golang?

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

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

TL;DR

package main

import "fmt"

func main() {
    // a simple variable
    role := "Admin"

    // get the memory address of the `role` variable
    roleMemAddr := &role

    // assign the value of `Employee` to the `role` variable
    // using the `roleMemAddr` pointer variable and dereferencing
    // it using the `*` symbol to assign the new value
    *roleMemAddr = "Employee"

    // log the value of `role` variable to console
    fmt.Println(role) // Employee ✅
}
Вход в полноэкранный режим Выйти из полноэкранного режима

Например, допустим, у нас есть переменная role, имеющая значение типа string Admin,

package main

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

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

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

package main

func main(){
    // a simple variable
    role := "Admin"

    // get the memory address of the `role` variable
    roleMemAddr := &role
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Подробнее о получении адреса памяти переменной читайте в блоге Как получить адрес памяти переменной в Go или Golang?

Мы хотим изменить значение исходной переменной role на значение string типа Employee, используя переменную-указатель roleMemAddr. Для этого мы можем использовать символ *, за которым следует имя переменной-указателя roleMemAddr, а затем использовать оператор = для присвоения значения типа string типу Employee. Эта техника называется разыменованием указателя.

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

package main

func main() {
    // a simple variable
    role := "Admin"

    // get the memory address of the `role` variable
    roleMemAddr := &role

    // assign the value of `Employee` to the `role` variable
    // using the `roleMemAddr` pointer variable and dereferencing
    // it using the `*` symbol to assign the new value
    *roleMemAddr = "Employee"
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Наконец, чтобы проверить, изменилось ли значение исходной переменной role или нет, давайте запишем его значение в консоль следующим образом,

package main

import "fmt"

func main() {
    // a simple variable
    role := "Admin"

    // get the memory address of the `role` variable
    roleMemAddr := &role

    // assign the value of `Employee` to the `role` variable
    // using the `roleMemAddr` pointer variable and dereferencing
    // it using the `*` symbol to assign the new value
    *roleMemAddr = "Employee"

    // log the value of `role` variable to console
    fmt.Println(role) // Employee ✅
}
Вход в полноэкранный режим Выход из полноэкранного режима

Как видите, мы успешно изменили значение переменной с помощью переменной-указателя в Go. Ура 🥳!

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

На этом все 😃.

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


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