type Country struct {
Code string
Name string
}
var store = map[string]*Country{}
在这个go代码段中,key是string,value是指向struct的指针。 在这里使用Contry指针的好处是什么? 我可以删除" *"并实现相同的行为? 如:
var store = map[string]Country
感谢。
答案 0 :(得分:1)
您可以使用指针或值来实现相同的行为。
package main
import (
"fmt"
)
type Country struct {
Code string
Name string
}
func main() {
var store = make(map[string]*Country)
var store2 = make(map[string]Country)
c1 := Country{"US", "United States"}
store["country1"] = &c1
store2["country1"] = c1
fmt.Println(store["country1"].Name) // prints "United States"
fmt.Println(store2["country1"].Name) // prints "United States"
}
使用指针将结构的地址存储在地图中,而不是整个结构的副本。对于像你的例子中的小结构,这不会有太大的区别。对于较大的结构,它可能会影响性能。