如何声明由在 Go 中返回多个值的函数调用实例化的多个变量?

假设我有一个功能:

func foo() (bool, string) { ... }

然后我希望声明两个变量band s,并使用函数调用返回的值进行初始化foo()。我知道我可以使用省略类型注释的“速记”语法来做到这一点:

b, s := foo();

但是,我不希望使用这种速记语法。我希望使用var带有变量名称和预期类型的语法。我试过这个:

var b bool, s string = foo();

但是,这给了我一个语法错误。这样做的正确方法是什么?


慕容708150
浏览 185回答 2
2回答

holdtom

在大多数情况下,正确的方法是使用速记语法。这就是它的用途。如果你不想使用速记语法,那么你可以使用var语法:var b boolvar s stringb, s = foo()或者var (    b bool    s string)b, s = foo()没有“速记 var”语法。

慕桂英3389331

你不能那样做。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()}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go