使用append函式的時候 , 要把擴展后的新slice重新賦值給原變數名 , 因為當底層陣列的空間不足的時候 , 會擴充記憶體空間 ,記憶體空間會重新分配
通常我們并不知道append呼叫是否導致了記憶體的重新分配,因此我們也不能確認新的slice和原始的slice是否參考的是相同的底層陣列空間,同樣,我們不能確認在原先的slice上的操作是否會影響到新的slice,因此,通常是將append回傳的結果直接賦值給輸入的slice變數:
runes = append(runes, r)
gofly客服代碼中的使用是:
result := make([]interface{}, 0) kefus := models.FindUsers() for _, kefu := range kefus { if uint(id) == kefu.ID { continue } item := make(map[string]interface{}) item["name"] = kefu.Name item["avator"] = kefu.Avator item["status"] = "offline" _, ok := ws.KefuList[kefu.Name] if ok { item["status"] = "online" } result = append(result, item) }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/227219.html
標籤:Go
上一篇:[Go]Go語言實戰-jwt-go會把存盤的數值型轉成float64
下一篇:關于maven(使用idea環境),為什么我的插件maven-deploy-plugin:2.8.2一直無法決議?
