与切片类似,映射也是引用类型。
当一个映射被赋值给新的变量时,它们都指向相同的内部数据结构。
package main
import (
"fmt"
)
func main() {
personSalary := map[string]int{
"steve": 12000,
"jamie": 15000,
}
personSalary["mike"] = 9000
fmt.Println("Original person salary", personSalary)
newPersonSalary := personSalary
newPersonSalary["mike"] = 18000
fmt.Println("Person salary changed", personSalary)
}
程序输出,
Original person salary map[steve:12000 jamie:15000 mike:9000]
Person salary changed map[steve:12000 jamie:15000 mike:18000]
类似的情况还有将映射作为参数传递给函数。当在函数内部对映射进行更改时,外部同样被影响。