3 回答

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
命名它們有一些好處:
它用作文檔。
它們會(huì)自動(dòng)聲明并初始化為零值。
如果您有多個(gè)返回站點(diǎn),則在更改函數(shù)的返回值時(shí)無需全部更改它們,因?yàn)樗粫?huì)顯示“ return”。
還有缺點(diǎn),主要是很容易通過聲明相同名稱的變量來意外地遮蓋它們。
有效的Go中有一個(gè)關(guān)于命名結(jié)果參數(shù)的部分:
可以給Go函數(shù)的返回或結(jié)果“參數(shù)”指定名稱,并將其用作常規(guī)變量,就像傳入的參數(shù)一樣。命名后,函數(shù)開始時(shí)會(huì)將它們初始化為其類型的零值;否則,將它們初始化為零。如果函數(shù)執(zhí)行不帶參數(shù)的return語句,則將結(jié)果參數(shù)的當(dāng)前值用作返回值。
名稱不是強(qiáng)制性的,但它們可以使代碼更短,更清晰:它們是文檔。如果我們命名nextInt的結(jié)果,則顯而易見,返回的int是哪個(gè)。
func nextInt(b []byte, pos int) (value, nextPos int) {[...]

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
至少在兩種情況下很有用:
每當(dāng)必須聲明要返回的變量時(shí)。例如
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
}
隨著通過函數(shù)的執(zhí)行路徑數(shù)量的增加,這一點(diǎn)變得越來越重要。
在記錄返回值并希望按名稱引用它們時(shí)。godoc將返回變量視為函數(shù)簽名的一部分。
- 3 回答
- 0 關(guān)注
- 212 瀏覽
添加回答
舉報(bào)