在 Go 中複製 map
Jay Singh
2022年4月22日
本教程演示瞭如何在 Go 中複製 map。
在 Go 中複製 map
在 Go 中,對映是無序鍵值對的集合。它很受歡迎,因為它允許快速查詢和可以使用鍵檢索、更新或刪除的值。
由於 Go 中的 map 是引用型別,因此你無法通過將一個例項分配給另一個例項來深度複製 map 的內容。你可以建立一個新的空對映,然後使用 for range 迴圈向其中新增適當的鍵值對。
在 Go 中,它是解決這個問題的最直接和最有效的解決方案。
克隆的 map 是此示例輸出中的深度克隆,新增額外的片段不會影響原始 map。
示例 1:
package main
import "fmt"
func main() {
dark := map[string]int{
"Jay": 1,
"Adam": 2,
"Eve": 3,
}
// copy a map
darkch := make(map[string]int)
for k, v := range dark {
darkch[k] = v
}
darkch["Jonas"] = 4
fmt.Println("Original")
fmt.Println(dark)
fmt.Println("Copied")
fmt.Println(darkch)
}
輸出:
Original
map[Adam:2 Eve:3 Jay:1]
Copied
map[Adam:2 Eve:3 Jay:1 Jonas:4]
在此示例中,我們將名稱和卷號對映到原始 map。
示例 2:
package main
import (
"fmt"
)
func main() {
studs := map[string]int{
"Jay": 1,
"Adam": 2,
"Eve": 3,
}
studs_tmp := make(map[string]int)
for name, roll_no := range studs {
studs_tmp[name] = roll_no
}
for name, roll_no := range studs_tmp {
fmt.Println("Name: ", name, ", roll_no: ", roll_no)
}
}
輸出:
Name: Jay , roll_no: 1
Name: Adam , roll_no: 2
Name: Eve , roll_no: 3