第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何在覆蓋錯誤的同時附加函數(shù)結(jié)果?

如何在覆蓋錯誤的同時附加函數(shù)結(jié)果?

Go
喵喵時光機(jī) 2022-10-10 19:38:58
通常,result, err := func()使用。當(dāng)其中一個變量已經(jīng)初始化時:_, err := func()var result stringresult, err = func()正在做:result, err = func()all_results += result // seems redundant and unneeded您如何將結(jié)果附加到其中一個(結(jié)果),并重置另一個?// along the lines of this:var result slice// for loop {result, _ += func() // combine this line_, err = func() // with this line你可以做:result +=, err = func()// orresult, err +=, = func()// orresult, err += = func()// orresult, err (+=, =) func() // ?
查看完整描述

1 回答

?
長風(fēng)秋雁

TA貢獻(xiàn)1757條經(jīng)驗 獲得超7個贊

語言規(guī)范不支持對多個返回值進(jìn)行不同處理。


但是,使用輔助函數(shù)很容易做到這一點:


func foo() (int, error) {

    return 1, nil

}


func main() {

    var all int


    add := func(result int, err error) error {

        all += result

        return err

    }


    if err := add(foo()); err != nil {

        panic(err)

    }

    if err := add(foo()); err != nil {

        panic(err)

    }

    if err := add(foo()); err != nil {

        panic(err)

    }

    fmt.Println(all)

}

這將輸出(在Go Playground3上嘗試)。


如果您可以將錯誤處理移動到輔助函數(shù)中,它也可以如下所示:


var all int


check := func(result int, err error) int {

    if err != nil {

        panic(err)

    }

    return result

}


all += check(foo())

all += check(foo())

all += check(foo())


fmt.Println(all)

這輸出相同,在Go Playground上試試這個。

另一個變體可以是在輔助函數(shù)中做所有事情:


var all int


handle := func(result int, err error) {

    if err != nil {

        panic(err)

    }

    all += result

}


handle(foo())

handle(foo())

handle(foo())


fmt.Println(all)

在Go Playground上試試這個。

參見相關(guān):單值上下文中的多個值


查看完整回答
反對 回復(fù) 2022-10-10
  • 1 回答
  • 0 關(guān)注
  • 93 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號