[2 。如以下GO代碼所示,這可能導致意外行為:
導入“ FMT” 鍵入mytype struct { 字段字符串 } func main(){ var陣列[10] mytype 對於_,e:= range數組{ e.field =“ foo” } 對於_,e:= range數組{ fmt.println(e.field) fmt.println(“ - ”) } } 在此示例中,目的是修改數組中每個元素的“字段”屬性。但是,由於範圍語句返回該值的副本,因此對本地副本進行了更改,並且不會影響原始數組。結果,輸出將所有“字段”屬性顯示為具有默認值。
要解決此問題,您無法在範圍循環中返回項目的地址。相反,您應該使用索引通過數組迭代,如下所示:mytype 對於IDX,_:= range Array { 數組[idx] .field =“ foo” } 對於_,e:= range數組{ fmt.println(e.field) fmt.println(“ - ”) } } 通過使用索引而不是for循環中的值,您確保對“字段”屬性所做的更改反映在原始數組中。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3