[英]Execution order for GoLang Struct Initializer
想知道 GoLang 是否保证了结构初始化的执行顺序。
以下代码是否总是产生
obj.a == 1
和obj.b == 2
还是未指定的行为?
num := 0
nextNumber := func() int {
num += 1
return num
}
type TwoNumbers struct {
a int
b int
}
obj := TwoNumbers{
a: nextNumber(),
b: nextNumber(),
}
指定评估顺序。
这些字段在复合文字表达式中分配。 该规范对一般表达式进行了说明:
...在计算表达式、赋值或返回语句的操作数时,所有 function 调用、方法调用和通信操作都按词法从左到右的顺序进行计算。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.