Я пытаюсь выяснить, как работают указатели в Go, и я думаю, что начинаю понимать это, но это сбивает меня с толку, и я действительно не знаю, что искать.Допустим, у меня есть следующая функция:
func createNode(nodeInfo string) *TreeNode {
return &TreeNode{info: nodeInfo}
}
Я понимаю, что функция возвращает адрес памяти созданного экземпляра структуры, но как сигнатура функции говорит *TreeNode
?Насколько я понимаю, *
используется для разыменования указателей для получения самого значения, так что же здесь происходит?
Также здесь:
func zero(xPtr *int) {
*xPtr = 0
}
func main() {
x := 5
zero(&x)
}
Когда происходит обратноефункция принимает аргумент с оператором *
, но сама функция вызывается с оператором &
.