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

func add1(num int) {
  num = num+1
}
myNum := 1
add1(myNum)
fmt.Println(myNum)

Это выведет на консоль 1 (попробовать можно здесь). Копия myNum создается при передаче функции add1. Итак, теперь есть две ячейки памяти со значением 1. Тот, который используется в функции, будет обновлен до 2, но исходное myNum останется прежним. Если мы хотим, чтобы функция изменяла myNum, мы должны использовать такие указатели:

func add1(num *int) {
  *num = *num+1
}
myNum := 1
add1(&myNum)
fmt.Println(myNum)

Все эти звездочки и амперсанды сбивают с толку, верно? Вы можете попробовать здесь

Вот шпаргалка, которой я пользуюсь каждый день:

Подробнее Голанг за шестьдесят секунд

Получить неограниченный доступ к Medium

Купите мне кофе, если вам понравилась статья :)

Больше контента на blog.devgenius.io.