ไม่แผนที่เป็นข้อมูลอ้างอิงโดยค่าเริ่มต้น
package main
import "fmt"
func mapToAnotherFunction(m map[string]int) {
m["hello"] = 3
m["world"] = 4
m["new_word"] = 5
}
func main() {
m := make(map[string]int)
m["hello"] = 1
m["world"] = 2
for key, val := range m {
fmt.Println(key, "=>", val)
}
fmt.Println("-----------------------")
mapToAnotherFunction(m)
for key, val := range m {
fmt.Println(key, "=>", val)
}
fmt.Println("-----------------------")
}
จาก Golang Blog-
ประเภทแผนที่คือประเภทอ้างอิงเช่นพอยน์เตอร์หรือสไลซ์ดังนั้นค่าของ m ด้านบนจึงเป็นศูนย์ มันไม่ได้ชี้ไปที่แผนที่เริ่มต้น แผนที่ศูนย์ทำงานเหมือนแผนที่ว่างเปล่าเมื่ออ่าน แต่การพยายามเขียนลงในแผนที่ศูนย์จะทำให้รันไทม์ตื่นตระหนก อย่าทำอย่างนั้น ในการเริ่มต้นแผนที่ให้ใช้ฟังก์ชันสร้างในตัว:
m = make(map[string]int)
Code Snippet Linkเล่นกับมัน