Golang中“ *”和“&”的含义是什么?

我是Golang的新手,正在做http://tour.golang.org/。谁能向我解释

特别是’*’和’&’的作用吗?我的意思是通过在函数声明中提及它们,它们应该/应该做什么?一个玩具的例子:

1: func intial1(var1 int, var2 int, func1.newfunc[]) *callproperfunction {

2:

3: addition:= make ([] add1, var1)

4: for i:=1;i<var2;i++ {

5: var2 [i] = *addtother (randomstring(lengthofcurrent))

6: }

7: return &callproperfunction {var1 int, var2 int, func1.newfunc[], jackpot}

8: }

看起来它们就像我们在C ++中一样。但是我无法将这些概念与此处的内容联系起来。换句话说,当我在Go的函数声明中使用“ *”和“&”时,它们会做什么。

我知道引用和取消引用的意思。我无法理解的是:如何使用指向函数的指针是Golang。例如第1行和第7行,这两行做什么?我们声明了一个名为intial1的函数,该函数返回一个指针?在第7行中,我们使用return函数使用参数对其进行调用。

回答:

您的问题与给出的示例不太吻合,但我会尽量简单明了。

假设我们有一个名为的变量a,它保存整数5,而另一个名为的变量将p是指针。这是*&进入游戏的地方。

与它们一起打印变量可以产生不同的输出,因此这完全取决于情况和使用情况。使用*&可以节省您的代码行(

),并使您的代码更美观/可读性更高。

&返回以下变量的 。

*返回以下变量的 (该变量 保存变量的内存地址,除非您要获取奇怪的输出,否则可能会因为访问计算机的RAM而出现问题)

var a = 5

var p = &a // p holds variable a's memory address

fmt.Printf("Address of var a: %p\n", p)

fmt.Printf("Value of var a: %v\n", *p)

// Let's change a value (using the initial variable or the pointer)

*p = 3 // using pointer

a = 3 // using initial var

fmt.Printf("Address of var a: %p\n", p)

fmt.Printf("Value of var a: %v\n", *p)

总而言之,在使用和&时,请记住是用于设置您要指向的变量的值,而&是您要/想要指向的变量的地址。

希望这个答案有帮助。

以上是 Golang中“ *”和“&”的含义是什么? 的全部内容, 来源链接: utcz.com/qa/435607.html

回到顶部