如何在 Go 中声明由返回多个值的函数调用实例化的多个变量?
How do I declare multiple variables instantiated by a function call returning multiple values in Go?
假设我有一个函数:
func foo() (bool, string) { ... }
然后我希望声明两个变量 b
和 s
,用函数调用 foo()
返回的值初始化。我知道我可以使用省略类型注释的 "shorthand" 语法来做到这一点:
b, s := foo();
但是,我不想使用这种 shorthand 语法。我希望使用带有变量名和预期类型的 var
语法。我试过这个:
var b bool, s string = foo();
但是,这给了我一个语法错误。正确的做法是什么?
在大多数情况下,正确的方法是使用 shorthand 语法。这就是它的用途。
如果你不想使用shorthand语法,那么你可以使用var
语法:
var b bool
var s string
b, s = foo()
或
var (
b bool
s string
)
b, s = foo()
没有 "shorthand var" 语法。
你不能那样做。 Go 规范定义了一个 variable declaration 语法如下:
VarDecl = "var" ( VarSpec | "(" { VarSpec ";" } ")" ) .
VarSpec = IdentifierList ( Type [ "=" ExpressionList ] | "=" ExpressionList ) .
IdentifierList
中的变量只能有一个 Type
或 none。你能做的最好的是
var b, s = foo()
或者,如果您希望它们位于包的顶层,
var (
b bool
s string
)
func init() {
b, s = foo()
}
假设我有一个函数:
func foo() (bool, string) { ... }
然后我希望声明两个变量 b
和 s
,用函数调用 foo()
返回的值初始化。我知道我可以使用省略类型注释的 "shorthand" 语法来做到这一点:
b, s := foo();
但是,我不想使用这种 shorthand 语法。我希望使用带有变量名和预期类型的 var
语法。我试过这个:
var b bool, s string = foo();
但是,这给了我一个语法错误。正确的做法是什么?
在大多数情况下,正确的方法是使用 shorthand 语法。这就是它的用途。
如果你不想使用shorthand语法,那么你可以使用var
语法:
var b bool
var s string
b, s = foo()
或
var (
b bool
s string
)
b, s = foo()
没有 "shorthand var" 语法。
你不能那样做。 Go 规范定义了一个 variable declaration 语法如下:
VarDecl = "var" ( VarSpec | "(" { VarSpec ";" } ")" ) .
VarSpec = IdentifierList ( Type [ "=" ExpressionList ] | "=" ExpressionList ) .
IdentifierList
中的变量只能有一个 Type
或 none。你能做的最好的是
var b, s = foo()
或者,如果您希望它们位于包的顶层,
var (
b bool
s string
)
func init() {
b, s = foo()
}