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

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

將變量傳遞給回調(diào)函數(shù)

將變量傳遞給回調(diào)函數(shù)

Go
aluckdog 2023-07-31 15:14:26
selector是將變量傳遞給回調(diào)函數(shù)的方法嗎?for _, selector := range listSelector {    c.OnHTML(selector, func(e *colly.HTMLElement) {        fmt.Println(selector) // Similar outputs    })}預(yù)期結(jié)果是輸出的不同選擇器。謝謝。
查看完整描述

1 回答

?
守著星空守著你

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

根據(jù)回調(diào)執(zhí)行的時間,您可能需要在塊內(nèi)創(chuàng)建迭代變量的副本并在閉包中使用它。


for _, selector := range listSelector {

? ? sel := selector // create a copy

? ? c.OnHTML(sel, func(e *colly.HTMLElement) {

? ? ? ? fmt.Println(sel) // Similar outputs

? ? })

}

如果回調(diào)被執(zhí)行并且它在循環(huán)中的下一次迭代之前退出,則不需要執(zhí)行此操作,但是如果稍后執(zhí)行回調(diào),則需要將迭代變量的副本傳遞給閉包。這是因為迭代變量被重用來保存迭代的值,這意味著當(dāng)前迭代中的變量值將被下一次迭代中的值覆蓋。


從規(guī)格來看:

迭代變量可以通過“range”子句使用短變量聲明(:=)的形式來聲明。在這種情況下,它們的類型設(shè)置為各自迭代值的類型,并且它們的范圍是“for”語句的塊;它們在每次迭代中都被重復(fù)使用。如果迭代變量在“for”語句之外聲明,則執(zhí)行后它們的值將是最后一次迭代的值。

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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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