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

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

Go中的遞歸函數(shù),如果內(nèi)部函數(shù)返回,外部函數(shù)是否繼續(xù)正常執(zhí)行?

Go中的遞歸函數(shù),如果內(nèi)部函數(shù)返回,外部函數(shù)是否繼續(xù)正常執(zhí)行?

Go
慕桂英3389331 2021-09-10 20:57:00
好的,所以我有這段代碼func registerDomain(domainName string, n int) bool {    //building the request here     resp, errr := client.Do(r)    if errr != nil {         if n == 1 {            return false        }        registerDomain(domainName, n-1)    }    bodyBytes, err2 := ioutil.ReadAll(resp.Body)    if err2 == nil {        resp.Body.Close()        //handle bodyBytes        //if the response is how it should be return true, if it's not call the function again with n-1    } else { //if there is an error reading the response        resp.Body.Close()        if n == 1 {            return false        }        registerDomain(domainName, n-1)    }    return false //it should never reach this line}解釋:我使用參數(shù) n(假設(shè)為 5)調(diào)用該函數(shù),該參數(shù)表示如果出現(xiàn)問題,該函數(shù)將重試的次數(shù)。每次出現(xiàn)問題時,我都會使用 n-1 進行遞歸調(diào)用,因此當(dāng)它達到 n=1 時,它放棄并返回 false。這段代碼在實踐中運行良好,它完成了它應(yīng)該做的事情,有時當(dāng)響應(yīng)不正確時,它會遞歸調(diào)用自己,并在第二次(或第三次、第四次......)時間工作。當(dāng)問題在 n=1 之前沒有解決時,它返回 false。問題:這是一個應(yīng)該運行大約 17 小時的大代碼的一部分,當(dāng)它試圖從這一行讀取正文時,它有時會出現(xiàn)恐慌:bodyBytes, err2 := ioutil.ReadAll(resp.Body)它說恐慌:運行時錯誤:無效的內(nèi)存地址或零指針取消引用?,F(xiàn)在我知道這可能意味著它試圖從不存在的 resp.Body 中讀取,但是Go 文檔明確指出,當(dāng) err 為零時, resp 總是包含一個非零的 resp.Body。所以,在我看來,這可能與遞歸調(diào)用有關(guān)。該只說對我來說很有意義的事情是這樣的情景:讓說,errr不為零(這意味著resp.Body不存在),如此這般的,如果errr內(nèi)部=零,因為N =! 1,它將以 n=4 再次調(diào)用自己。比方說,這個時候一切都是理所應(yīng)當(dāng)?shù)亩诙€函數(shù)返回true的第一個BUT的第一個與執(zhí)行,并繼續(xù)嘗試從一個不存在的resp.Body閱讀。這會引起恐慌,我們在這里......所以,我需要的是一個確切知道遞歸函數(shù)如何工作的人,如果不是這樣,我能否在閱讀表單之前以某種方式檢查 resp.Body 的存在,或者有幫助的東西。不管怎么說,多謝拉!:)更新:你沒事,我的代碼不再恐慌,我也一樣。非常感謝?。ㄎ也淮_定這是不是更新的地方)
查看完整描述

3 回答

?
嚕嚕噠

TA貢獻1784條經(jīng)驗 獲得超7個贊

改變

registerDomain(domainName, n-1)

return registerDomain(domainName, n-1)

這樣外部函數(shù)將不會繼續(xù)執(zhí)行并且不會從 nil 主體中讀取。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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