Go中的三个逗号语法是什么?

时间:2018-03-24 18:18:30

标签: go

任何人都可以向我解释这条线路在做什么吗?我猜之前我从未见过这个。

EventViewHolders

如本github code

所述

2 个答案:

答案 0 :(得分:4)

这不是三个逗号语法。它实际上是在一行中将两个变量初始化

np.Point, np.Valid = Point{}, false

类似于

np.Point = Point{}
np.Valid = false

答案 1 :(得分:2)

  

The Go Programming Language Specification

     

Assignments

     

元组赋值分配多​​值的各个元素   对变量列表的操作。有两种形式。在第一个,   右手操作数是一个单值多值表达式,如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