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

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

在 Go 中返回錯誤時結(jié)果值的最佳實踐

在 Go 中返回錯誤時結(jié)果值的最佳實踐

Go
紅顏莎娜 2023-06-05 17:28:35
如果您的函數(shù)既返回值類型又返回錯誤類型,那么當(dāng)錯誤類型為非 nil 時確保值類型為 niled/零值是“可行的方法”嗎?例子:func mayError() ([]string, error) {   ... }如果不是,[]string返回值應(yīng)該是嗎?nilerrornil
查看完整描述

1 回答

?
ABOUTYOU

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

一般來說,如果一個函數(shù)未能完成任務(wù),它的返回值應(yīng)該被視為不可靠的。因為 go 中的錯誤是值,調(diào)用者可能會忽略它返回的錯誤。例如:


foo := myType{

    Bar: 123,

    Foo: "some string",

}


b, _ := json.Marshal(foo)

我忽略了這個錯誤,因為它是我創(chuàng)建的類型,而且我知道它可以被編組。但是,無論哪種方式都被認(rèn)為是不好的做法。盡管如此,現(xiàn)在想象有人調(diào)用您的函數(shù):


slice, _ := mayError()

而你的函數(shù),在向切片中添加 2 個元素后,出錯了。返回部分切片可能并且很可能會導(dǎo)致進(jìn)一步的錯誤行為。這使得代碼難以調(diào)試??偟膩碚f,我會說在這種情況下最好返回一個 nil 切片和一個錯誤。如果代碼如下所示:


slice, _ := mayError() // returns nil, someErr

// panic

if slice[0] != "" {

}

至少錯誤會立即顯示出來,您會看到返回的任何錯誤都mayError被忽略了。這使得代碼更容易調(diào)試/維護(hù)/修復(fù)。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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