在 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