2 回答

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊
map有所不同,因?yàn)樗莾?nèi)置類型而不是函數(shù)。Go語(yǔ)言規(guī)范:索引表達(dá)式map指定了訪問(wèn)a元素的2種形式。
使用功能,您將無(wú)法做到這一點(diǎn)。如果一個(gè)函數(shù)有2個(gè)返回值,則必須“期望”這兩個(gè)值或根本沒有。
但是,您可以將任何返回值分配給Blank標(biāo)識(shí)符:
s, b := Hello() // Storing both of the return values
s2, _ := Hello() // Storing only the first
_, b3 := Hello() // Storing only the second
您還可以選擇不存儲(chǔ)任何返回值:
Hello() // Just executing it, but storing none of the return values
注意:您也可以將兩個(gè)返回值都分配給空白標(biāo)識(shí)符,盡管它沒有用(除了驗(yàn)證它確實(shí)有兩個(gè)返回值):
_, _ = Hello() // Storing none of the return values; note the = instead of :=
您也可以在Go Playground上嘗試這些。
輔助功能
如果您多次使用它,并且不想使用空白標(biāo)識(shí)符,請(qǐng)創(chuàng)建一個(gè)放棄第二個(gè)返回值的幫助器函數(shù):
func Hello2() string {
s, _ := Hello()
return s
}
現(xiàn)在,您可以執(zhí)行以下操作:
value := Hello2()
fmt.Println(value)

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
除了對(duì)@icza的解釋之外:
我不建議在那里使用輔助功能。特別是如果Hello函數(shù)是您自己的函數(shù)。
但是,如果您無(wú)法控制它,那么可以使用幫助程序。
如果是您自己的函數(shù),最好更改函數(shù)的簽名??赡苁悄谀硞€(gè)地方犯了設(shè)計(jì)錯(cuò)誤。
您也可以這樣做:
package main
import "fmt"
func Hello() (string, bool) {
return "hello", true
}
func main() {
// Just move it one line above: don't use a short-if
value, ok := Hello()
if ok {
fmt.Println(value)
}
}
- 2 回答
- 0 關(guān)注
- 1071 瀏覽
添加回答
舉報(bào)