2 回答

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

TA貢獻1829條經驗 獲得超4個贊
除了對@icza的解釋之外:
我不建議在那里使用輔助功能。特別是如果Hello函數是您自己的函數。
但是,如果您無法控制它,那么可以使用幫助程序。
如果是您自己的函數,最好更改函數的簽名??赡苁悄谀硞€地方犯了設計錯誤。
您也可以這樣做:
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 關注
- 1066 瀏覽
添加回答
舉報