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

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

是否可以在語句期間從函數(shù)(具有多個(gè)返回值)中獲取單個(gè)值?

是否可以在語句期間從函數(shù)(具有多個(gè)返回值)中獲取單個(gè)值?

Go
守著星空守著你 2022-08-24 11:13:53
例如,假設(shè)返回和和一個(gè),我想將int返回值追加到字符串中。我知道如何在go中做到這一點(diǎn)的方法是:add(int, int)interrorfoo := "" bar, _ := add(1, 2) foo += strconv.Itoa(bar)但是,如果沒有返回錯(cuò)誤變量,我可以只做.add()foo += strconv.Itoa(add(1, 2))是否可以在語句期間忽略 error 變量來執(zhí)行類似操作?
查看完整描述

2 回答

?
桃花長相依

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

是否可以在語句期間忽略 error 變量來執(zhí)行類似操作?

不,Go沒有為這樣的東西提供任何語言結(jié)構(gòu)。

(但你可以有自己的必須...函數(shù),如您將在包正則表達(dá)式或文本/模板中找到的函數(shù)。


查看完整回答
反對(duì) 回復(fù) 2022-08-24
?
慕容708150

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

免責(zé)聲明(我的觀點(diǎn)):這個(gè)答案只是為了好玩。我不建議使用這個(gè)。忽略錯(cuò)誤是不好的,試圖壓縮每一行代碼都是愚蠢的。這只是說明了一些關(guān)于Go如何處理多個(gè)返回值的有趣概念,我在寫這篇文章時(shí)學(xué)到了一些新東西,所以我想我會(huì)分享。


相關(guān):這個(gè)問題更實(shí)際的表親是“Must模式”,由一些標(biāo)準(zhǔn)庫(包括模板)使用。它涉及獲取值和錯(cuò)誤,如果錯(cuò)誤不是nil,則返回該值。請(qǐng)參閱此(當(dāng)前凍結(jié)的)提案panic


您需要一個(gè)包裝器函數(shù)來執(zhí)行此操作。多個(gè)返回值將自動(dòng)展開以填充參數(shù)。


請(qǐng)參閱此示例,它與add()


func ignoreError(i int, err error) int {

    return i

}

叫:


foo := ""

foo += strconv.Itoa(ignoreError(add(1, 2)))

下面是一個(gè)更通用的替代方法,它將從另一個(gè)函數(shù)中獲取任意數(shù)量的值并返回第一個(gè)值。


func takeFirstValue(v ...interface{}) interface{} {

    if len(v) == 0 {

        return nil

    }

    return v[0]

}

叫:


    foo := ""

    foo += strconv.Itoa(takeFirstValue(add(1, 2)).(int))

此選項(xiàng)需要在調(diào)用站點(diǎn)進(jìn)行強(qiáng)制轉(zhuǎn)換以還原數(shù)據(jù)類型,因?yàn)?takeFirstValue 返回 。.(int)interface{}


查看完整回答
反對(duì) 回復(fù) 2022-08-24
  • 2 回答
  • 0 關(guān)注
  • 90 瀏覽

添加回答

舉報(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)