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

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

為什么要命名返回參數?

為什么要命名返回參數?

Go
冉冉說 2021-05-20 14:15:48
命名函數的返回參數有什么好處?func namedReturn(i int) (ret int) {    ret = i    i += 2    return}func anonReturn(i int) int {    ret := i    i += 2    return ret}
查看完整描述

3 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

命名它們有一些好處:

  • 它用作文檔。

  • 它們會自動聲明并初始化為零值。

  • 如果您有多個返回站點,則在更改函數的返回值時無需全部更改它們,因為它只會顯示“ return”。

還有缺點,主要是很容易通過聲明相同名稱的變量來意外地遮蓋它們。


有效的Go中有一個關于命名結果參數的部分:

可以給Go函數的返回或結果“參數”指定名稱,并將其用作常規變量,就像傳入的參數一樣。命名后,函數開始時會將它們初始化為其類型的零值;否則,將它們初始化為零。如果函數執行不帶參數的return語句,則將結果參數的當前值用作返回值。

名稱不是強制性的,但它們可以使代碼更短,更清晰:它們是文檔。如果我們命名nextInt的結果,則顯而易見,返回的int是哪個。

func nextInt(b []byte, pos int) (value, nextPos int) {

[...]


查看完整回答
反對 回復 2021-05-31
?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

至少在兩種情況下很有用:


每當必須聲明要返回的變量時。例如


func someFunc() (int, error) {

    var r int

    var e error

    ok := someOtherFunc(&r)  // contrived, I admit

    if !ok {

        return r, someError()

    }

    return r, nil

}


func someFunc() (r int, e error) {

    ok := someOtherFunc(&r)

    if !ok {

        e = someError()

    }

    return

}

隨著通過函數的執行路徑數量的增加,這一點變得越來越重要。


在記錄返回值并希望按名稱引用它們時。godoc將返回變量視為函數簽名的一部分。


查看完整回答
反對 回復 2021-05-31
  • 3 回答
  • 0 關注
  • 215 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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