亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何聲明由在 Go 中返回多個值的函數調用實例化的多個變量?

如何聲明由在 Go 中返回多個值的函數調用實例化的多個變量?

Go
慕容708150 2021-09-20 20:41:44
假設我有一個功能: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”語法。


查看完整回答
反對 回復 2021-09-20
?
慕桂英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()

}


查看完整回答
反對 回復 2021-09-20
  • 2 回答
  • 0 關注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號