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

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

為什么映射和類型斷言可以返回 1 或 2 個值?

為什么映射和類型斷言可以返回 1 或 2 個值?

Go
蠱毒傳說 2021-12-27 17:48:36
要定義地圖,我們可以做這樣的事情:value, present := m["key"]或者:value := m["key"]使用類型斷言,我們可以:var i interface{} = "hello"s := i.(string)fmt.Println(s)s, ok := i.(string)fmt.Println(s, ok)但我找不到定義可以返回 1 個值或 2 個值的 func 的方法。例如:func hello() (string, error) {    return "world", nil}當我調用這個函數時,我得到:v, ok := hello() // validv := hello() // invalidPS:我知道類似的東西是如何template.Must工作的,但它似乎不同。我真的很想知道 Map 和類型斷言是如何發揮魔力的,所以我可以將它應用到函數中。提前致謝。(我清楚嗎?我英語不好抱歉)。
查看完整描述

1 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

函數類型表示具有相同參數和結果類型的所有函數的集合。


FunctionType   = "func" Signature .

Signature      = Parameters [ Result ] .

Result         = Parameters | Type .

Parameters     = "(" [ ParameterList [ "," ] ] ")" .

ParameterList  = ParameterDecl { "," ParameterDecl } .

ParameterDecl  = [ IdentifierList ] [ "..." ] Type .

空白標識符


空白標識符由下劃線字符 _ 表示。


作業


空白標識符提供了一種忽略賦值中右側值的方法:


x, _ = f()  // evaluate f() but ignore second result value

映射、類型斷言和for帶range子句的語句是 Go 編程語言的特殊功能。普通函數類型不能有可變數量的返回值。


您可以忽略帶有下劃線 (_)、空白標識符的返回值,或者您可以使用包裝函數。例如,


package main


import "fmt"


func two() (int, bool) {

    return 42, true

}


func one() int {

    r, _ := two()

    return r

}


func main() {

    r, ok := two()

    r, _ = two()

    r = one()

    fmt.Println(r, ok)

}


查看完整回答
反對 回復 2021-12-27
  • 1 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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