怎樣刪除取出切片中的不重複元素,還不會造成記憶體逃逸
package main
import (
"fmt"
)
func uniqueSlice(slice *[]string) {
found := make(map[string]int)
total := 0
for i, val := range *slice {
if _, ok := found[val]; !ok {
(*slice)[total] = (*slice)[i]
found[val]++
total++
}
}
(*slice) = (*slice)[:total]
}
func main() {
s := []string{"1", "1", "3", "2", "4", "2", "3", "1", "4"}
uniqueSlice(&s)
fmt.Println(s)
}
MacBook-Pro:slice haoc$ go build -gcflags '-m' ./rm_duplicate.go
# command-line-arguments
./rm_duplicate.go:18:11: uniqueSlice ignoring self-assignment to *slice
./rm_duplicate.go:7:27: leaking param content: slice
./rm_duplicate.go:8:15: uniqueSlice make(map[string]int) does not escape
./rm_duplicate.go:22:15: []string literal escapes to heap
./rm_duplicate.go:24:13: s escapes to heap
./rm_duplicate.go:23:14: main &s does not escape
./rm_duplicate.go:24:13: main ... argument does not escape
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- go中的記憶體逃逸Go記憶體
- Go記憶體逃逸分析Go記憶體
- win10怎麼刪除虛擬記憶體 刪除win10虛擬記憶體的方法Win10記憶體
- dealloc不呼叫造成記憶體洩漏記憶體
- 面試官:怎麼刪除 HashMap 中的重複元素?第 3 種實現思路,99% 的人不會!面試HashMap
- Go記憶體管理逃逸分析Go記憶體
- 有了 GC 還會不會發生記憶體洩漏?GC記憶體
- js隨機取出陣列中不重複值元素程式碼和例項JS隨機陣列
- 閉包會造成記憶體洩漏嗎?記憶體
- Android-Fragment 切換造成記憶體溢位,導致記憶體增長AndroidFragment記憶體溢位
- 有了垃圾回收,還會不會發生記憶體洩漏?記憶體
- 在ArrayList的迴圈中刪除元素,會不會出現問題?
- 如何刪除ArrayList中的重複元素
- JavaScript陣列中隨機取出不重複項JavaScript陣列隨機
- Redis的資料被刪除,佔用記憶體咋還那麼大?Redis記憶體
- JavaScript 刪除陣列重複元素JavaScript陣列
- Remove Duplicate Letters 刪除重複元素REM
- JavaScript陣列刪除重複元素JavaScript陣列
- 刪除元素的指定的class樣式類
- js刪除陣列中重複的元素JS陣列
- js刪除陣列中的重複元素JS陣列
- AI晶片需要怎樣的記憶體?AI晶片記憶體
- win10怎樣刪虛擬記憶體_Win10虛擬記憶體如何關閉Win10記憶體
- [Redis]過期刪除和記憶體淘汰Redis記憶體
- ES6刪除字串中重複的元素字串
- 在 4GB 實體記憶體的機器上,申請 8G 記憶體會怎麼樣?記憶體
- 刪除重複id的記錄
- 記憶體卡視訊刪除後怎麼恢復?三個步驟一看就會記憶體
- 電腦記憶體不夠用了怎麼辦 電腦記憶體不夠用的方法記憶體
- javascript刪除陣列重複元素程式碼JavaScript陣列
- JavaScript 陣列隨機不重複元素JavaScript陣列隨機
- windows10更新記錄刪除_怎樣刪除win10更新歷史記錄WindowsWin10
- javascript刪除陣列中的重複元素程式碼JavaScript陣列
- 怎樣新增、刪除、移動、複製、建立、查詢節點
- 造成記憶體洩漏的操作有哪些?記憶體
- 【CDB】怎樣修改PDB的記憶體引數記憶體
- 刪除Oracle重複記錄Oracle
- oracle刪除重複記錄Oracle