亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言中的For循環常見問題的處理方式

發布時間:2021-09-04 09:18:55 來源:億速云 閱讀:140 作者:chen 欄目:編程語言

這篇文章主要講解了“Go語言中的For循環常見問題的處理方式”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Go語言中的For循環常見問題的處理方式”吧!

For循環在我們日常編碼中可能用的很多。在很多業務場景中我們都需要用for循環處理。但golang中的for循環有一個大大大的坑,大家可否遇到。直接上代碼:

Go語言中的For循環常見問題的處理方式

我們寫一個測試類,定義一個切片數組,然后循環迭代每個元素,將元素的值放到另一個切片。循環finalArrays的時候按照我們的預期應該輸出1、2、3、4。但事與愿違,輸出的結果如下圖:

Go語言中的For循環常見問題的處理方式

懵逼了吧!為什么會出現這種奇怪的現象呢?這就是golang的循環變量的作用域導致的。

在golang的for循環中,循環內部創建的函數變量都是共享同一塊內存地址,for循環總是使用同一塊內存去接收循環中的的value變量的值。不管循環多少次,value的內存地址都是相同的。事實確實如此,我們輸出value的內存地址看下:

Go語言中的For循環常見問題的處理方式

所以,可以看到,整個4次循環過程中,所有變量值都是在0xc0000b8780這個地址上迭代的。4次循環都指向的是同一塊內存地址,最后一次賦值的操作變量的值是4,指向了這塊內存地址,所以前三次的值都變成了4。那我們怎么優化呢?我們只需要定義臨時變量。

Go語言中的For循環常見問題的處理方式

我們定義一個臨時變量tmp,將value的值賦給tmp,問題就解決了。

評論中很多同學說,例子不足以說明這個問題,我這里寫一段我們實際業務場景的代碼,大家看看。

Go語言中的For循環常見問題的處理方式

Bid結構體中的屬性我就不貼圖了。這種情況很多新手同學會犯,尤其是從java轉go的同學。

感謝各位的閱讀,以上就是“Go語言中的For循環常見問題的處理方式”的內容了,經過本文的學習后,相信大家對Go語言中的For循環常見問題的處理方式這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青浦区| 醴陵市| 连平县| 佛坪县| 华亭县| 白玉县| 疏附县| 五寨县| 昌江| 高清| 石渠县| 肥西县| 沁源县| 大兴区| 得荣县| 霍林郭勒市| 临汾市| 班玛县| 沂南县| 秦安县| 体育| 西华县| 淮安市| 丹东市| 新田县| 都兰县| 乐至县| 侯马市| 东港市| 靖宇县| 崇阳县| 揭阳市| 滁州市| 临洮县| 诏安县| 乌拉特中旗| 浪卡子县| 关岭| 萨迦县| 华安县| 翁牛特旗|