答案 0 :(得分:4)
这不是三个逗号语法。它实际上是在一行中将两个变量初始化
np.Point, np.Valid = Point{}, false
类似于
np.Point = Point{}
np.Valid = false
答案 1 :(得分:2)
The Go Programming Language Specification
元组赋值分配多值的各个元素 对变量列表的操作。有两种形式。在第一个, 右手操作数是一个单值多值表达式,如a 函数调用,通道或映射操作或类型断言。该 左侧操作数的数量必须与数量匹配 值。例如,如果f是一个返回两个值的函数,
x, y = f()
将第一个值分配给x,将第二个值分配给y。在第二种形式, 左边的操作数数量必须等于数量 右边的表达式,每个都必须是单值的,而且 右边的第n个表达式被赋值给第n个操作数 左:
one, two, three = '一', '二', '三'
元组赋值分配多值的各个元素 对变量列表的操作。在第二种形式中,左边的操作数的数量必须等于>的数量。右边的表达式,每个表达式必须是单值的,右边的第n个表达式分配给左边的第n个操作数。
在您的示例中,
np.Point, np.Valid = Point{}, false
或者,相当于
t1 := Point{}
t2 := false
np.Point = t1
np.Valid = t2