假設我有一個功能: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 關注
- 202 瀏覽
添加回答
舉報
0/150
提交
取消