我是Golang的新手,正在做http://tour.golang.org/。谁能向我解释第1、3、5和7行,特别是'*'和'&'的作用吗?我的意思是通过在函数声明中提及它们,它们应该/应该做什么?一个玩具的例子:
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函数用参数调用它。
这可能是Go中最令人困惑的事情之一。您基本上需要了解3种情况:
该&
运营商
&
当您想获取该变量的内存地址时,它位于该变量的前面。
该*
运营商
*
放在保存内存地址并对其进行解析的变量的前面(因此它是&
运算符的对应物)。它获得并获得了指针指向的东西,例如*myString
。
myString := "Hi"
fmt.Println(*&myString) // prints "Hi"
或更有用的是
myStructPointer = &myStruct
// ...
(*myStructPointer).someAttribute = "New Value"
*
在类型前面
当*
放在类型的前面时,例如*string
,它成为类型声明的一部分,因此您可以说“此变量包含指向字符串的指针”。例如:
var str_pointer *string
因此,令人困惑的是,*
真正用于2个单独的(尽管相关)的东西。星可以是运营商或一个类型的一部分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句