假设我有一个功能:func foo() (bool, string) { ... }然后我希望声明两个变量band s,并使用函数调用返回的值进行初始化foo()。我知道我可以使用省略类型注释的“速记”语法来做到这一点:b, s := foo();但是,我不希望使用这种速记语法。我希望使用var带有变量名称和预期类型的语法。我试过这个:var b bool, s string = foo();但是,这给了我一个语法错误。这样做的正确方法是什么?
2 回答
holdtom
TA贡献1805条经验 获得超10个赞
在大多数情况下,正确的方法是使用速记语法。这就是它的用途。
如果你不想使用速记语法,那么你可以使用var语法:
var b bool
var s string
b, s = foo()
或者
var (
b bool
s string
)
b, s = foo()
没有“速记 var”语法。
慕桂英3389331
TA贡献2036条经验 获得超8个赞
你不能那样做。Go Spec 定义了一个变量声明语法如下:
VarDecl = "var" ( VarSpec | "(" { VarSpec ";" } ")" ) .
VarSpec = IdentifierList ( Type [ "=" ExpressionList ] | "=" ExpressionList ) .
中的变量IdentifierList只能有一个Type或没有。你能做的最好的是
var b, s = foo()
或者,如果您希望它们位于包裹的顶层,
var (
b bool
s string
)
func init() {
b, s = foo()
}
- 2 回答
- 0 关注
- 184 浏览
添加回答
举报
0/150
提交
取消