Указатель — это место в памяти, где находится значение. В 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.