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

大卫 :

我是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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Maven输出中“ <<<”,“ >>>”和“ ---”的含义是什么?

Linux中fork()和grep的含义是什么?

BDD或FDD中“路径”的含义和意义是什么?

在jQuery的延迟对象中解决和拒绝的含义是什么?

Firebase和旧版iOS在GTM设置中的含义是什么

Blade :: extend函数中$ 1和$ 2的含义是什么

在注释声明中定义枚举和字段的含义是什么?

“!”,“?”,“ _”和“。”的含义是什么。长生不老药中的语法

Devise用户中“ provider”和“ uid”的含义是什么?

编程中源代码和代码的不同含义是什么?

JS中“ <-”的含义是什么

gradle中“ with”的含义是什么

Python中%()的含义是什么?

JavaScript中“ ===”的含义是什么?

XPath中.//的含义是什么?

Lua中for ...的含义是什么?

TypeScript中“:”的含义是什么?

Golang中“圆括号”语法的含义是什么?

WSO2 ESB中入站端点的含义和目的是什么?

在Linux中Ctrl + Alt + Del上执行的含义和命令是什么?

以下代码中ii =(char *)&i和a =(char *)&a的含义是什么

Frama-C EVA插件中“之后”专栏的含义和目的是什么

Git中的Azure DevOps蓝色和灰色点在图中的含义是什么

jshell中J和R标志的确切含义/目的是什么?

EPS文件中%% BoundingBox和%ImageData的确切含义是什么

NodeJS中“ bodyParser.urlencoded({扩展:true}))和“ bodyParser.json()”的含义是什么?

Android Rect对象中顶部,左侧,右侧和底部的含义是什么

网址重写模式中^ ON $和^ OFF $的含义是什么,与该模式匹配的内容

“ export声明类型Xyz”和“ export类型Xyz”中声明的含义是什么