Short variable declarations

一个 短变量声明 使用如下的语法:

ShortVarDecl = IdentifierList ":=" ExpressionList .

它是带有初始化表达式但没有类型的常规变量声明的简写:

"var" IdentifierList = ExpressionList .
i, j := 0, 10
f := func() int { return 7 }
ch := make(chan int)
r, w, _ := os.Pipe()  // os.Pipe() 返回两个 File 类型的变量和一个错误(如果有的话)
_, y, _ := coord(p)   // coord() 三个值;只有 y 坐标会在后面被使用(而忽略其他两个)

与常规变量声明不同,短变量声明可以重新声明变量,前提是它们最初是在相同类型的同一块(或者如果该块是函数体中的参数列表中)早期声明且具有相同类型,并且是一个非空白变量。重声明只能出现在多变量简短声明中。重新声明不会引入新变量;它只是为原始值分配一个新值。

field1, offset := nextField(str, 0)
field2, offset := nextField(str, offset)  // 重声明 offset
a, a := 1, 2                              // 不合法:如果 a 已经被声明过则 a 会被重声明两次,而如果 a 未被声明则不会声明新的变量

短变量声明只能出现在函数中。 在某些情况下,如iffor 语句的初始化语句或 switch语句中它们可用于声明局部临时变量。

本文章首发在 LearnKu.com 网站上。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~