在结构体 Golang 的变量赋值中按引用或按值传递

pass by reference or by value in variable assignment of struct, Golang

提问人:Yousuf Ali 提问时间:3/8/2022 最后编辑:iczaYousuf Ali 更新时间:3/8/2022 访问量:1261

问:

type temp struct{
   val int
}

variable1 := temp{val:5}  // 1
variable2 := &temp{val:6} // 2

在 2 中,引用存储在 .variable2

在 1 中,是否正在执行复制操作?还是也指向相同的内存部分?或者具有与具有不同的内存部分?variable1temp{val:5}

go 引用 变量赋

评论

0赞 Volker 3/8/2022
请参加 Go 之旅,了解这些基本的语言基础知识。Go 中没有引用,指针就是值。1 制作副本。

答:

2赞 icza 3/8/2022 #1

temp{val:5}是一个复合文本,它创建一个 type 的值。temp

在第一个示例中,您使用了简短的变量声明,该声明等效于

var variable1 = temp{val: 5}

此处创建了一个变量 (),该变量使用值 进行初始化。variable1temp{val: 5}

在第二个示例中,您采用复合文本的地址。这确实创建了一个变量,使用文本的值初始化,并且此变量的地址将是表达式的结果。此指针值将分配给变量 。variable2

规格: Compositle literals:

获取复合文本的地址会生成一个指针,指向使用文本值初始化的唯一变量