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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如果沒有錯(cuò)誤則返回 Golang

如果沒有錯(cuò)誤則返回 Golang

Go
桃花長相依 2022-01-04 21:13:27
在Golang中,是否可以運(yùn)行該函數(shù)err, value := function()if err == nil {  return value}而不是這樣做:err, value := function()if err != nil {  panic(err)}return err如果有,是否有任何時(shí)間優(yōu)勢(shì)/獎(jiǎng)金?這不是非致命錯(cuò)誤。我正在嘗試將某些內(nèi)容轉(zhuǎn)換為不同類型,但我不確定應(yīng)該使用哪種類型。
查看完整描述

1 回答

?
明月笑刀無情

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊

恐慌類似于異常,但不會(huì)傳遞給調(diào)用者(也就是說,當(dāng)您調(diào)用恐慌時(shí),它會(huì)立即發(fā)生;您無需等待)。您應(yīng)該使用代碼的第一個(gè)示例,您可以在其中嘗試操作、失敗并繼續(xù)。


func main() {

    s1 := rand.NewSource(time.Now().UnixNano())

    r1 := rand.New(s1)


    // Generate some random numbers, and call into add()

    for i := 0; i < 10; i++ {

        s, err := add(r1.Intn(100), r1.Intn(100))

        if err != nil {

            fmt.Println(err)

            continue

        }

        fmt.Println(s)

    }

}


// Error if we get a sum over 100

func add(a int, b int) (int, error) {

    s := a + b

    if s > 100 {

        return s, errors.New("Hey doofus, error!")

    }

    return s, nil

}

如果你在這個(gè)例子中恐慌,你就大功告成了(試試它——而不是返回一個(gè)錯(cuò)誤做恐慌(“一些錯(cuò)誤”)。但是相反,我們確定有一個(gè)錯(cuò)誤,我們可以嘗試生成另一個(gè)隨機(jī)數(shù)字。


就像其他人所說的那樣,如果您有一個(gè)無法恢復(fù)的用例(假設(shè)您試圖從文件中讀取,但文件不在那里),您可能會(huì)決定最好恐慌。但是如果你有一個(gè)長時(shí)間運(yùn)行的進(jìn)程(比如一個(gè) API),你會(huì)想要繼續(xù)攪動(dòng),盡管有任何錯(cuò)誤。


GoPlay 在這里:http ://play.golang.org/p/ThXTxVfM6R


OP 用用例更新了他的帖子——他正在嘗試轉(zhuǎn)換為一種類型。如果你在這個(gè)函數(shù)中恐慌,你會(huì)死在水里。相反,我們想要返回一個(gè)錯(cuò)誤,讓調(diào)用者決定如何處理錯(cuò)誤。以此為例:


func interfaceToString(i interface{}) (string, error) {

    if i == nil {

        return "", errors.New("nil interface")

    }


    switch i.(type) {

    case string:

        return i.(string), nil

    case float64:

        return strconv.Itoa(int(i.(float64))), nil

    case int:

        return strconv.Itoa(i.(int)), nil

    }


    return "", errors.New(fmt.Sprintf("Unable to convert %v", i))

}

GoPlay 在這里:http ://play.golang.org/p/7y7v151EH4


查看完整回答
反對(duì) 回復(fù) 2022-01-04
  • 1 回答
  • 0 關(guān)注
  • 151 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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