在 Go 中复制 map
本教程演示了如何在 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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。