gpt4 book ai didi

go - 通过引用实例化对象

转载 作者:IT王子 更新时间:2023-10-29 02:32:07 28 4
gpt4 key购买 nike

这是我不太理解的 Go 代码示例:

type MyClass struct {
field1 string
field2 string
}
...
objectinstance1 := MyClass{field1:"Hello", field2:"World"}
objectinstance2 := &MyClass{field1:"Hello", field2:"World"}

我可以使用相同的语法对 objectinstance1objectinstance2(例如方法调用)做完全相同的事情。

所以我不明白 & 运算符的作用。我的理解是 objectinstance1 包含一个对象,而 objectinstance2 包含一个指针。

对我来说,C 中的 char 和 char* 之间的区别是一样的。

但在这种情况下我应该使用 -> 而不是 . (点)?

最佳答案

& 运算符为您提供指向结构的指针,而不使用它时为您提供结构值。

与此相关的最大地方是当您将此结构传递给另一个函数时 - 如果您传递使用 & 运算符创建的指针,则另一个函数可以访问 相同的结构。如果那个函数改变了它,你也得到了改变的结构。

如果您在没有使用 & 运算符的情况下传递您创建的变量,则您将其传递给的函数具有该结构的副本。该函数或任何其他函数都无法改变您在变量中看到的内容。

这有效地使 value 变量可以安全地用于多个没有竞争条件的 go 例程——每个人都有自己的结构副本。

如果您将使用 & 生成的指针传递给其他 go 例程,所有例程都可以访问相同 结构,因此您真的希望这是有意和考虑的。

关于go - 通过引用实例化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47459843/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com