中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

淳化县| 随州市| 沁阳市| 曲周县| 正定县| 通渭县| 马边| 阳春市| 通山县| 眉山市| 耒阳市| 诸暨市| 乌兰察布市| 麻阳| 名山县| 肃宁县| 舞阳县| 永昌县| 梁河县| 扎鲁特旗| 平果县| 谢通门县| 五大连池市| 宜兰县| 白城市| 巢湖市| 上栗县| 邵东县| 南丰县| 三门县| 莱西市| 溧阳市| 桑日县| 张家界市| 泸溪县| 如皋市| 荃湾区| 晋宁县| 黎平县| 平遥县| 墨竹工卡县|