go map,key是string,value是指向struct的指针

时间:2015-04-25 17:10:10

标签: pointers go

type Country struct {
    Code string
    Name string
}

var store = map[string]*Country{}

在这个go代码段中,key是string,value是指向struct的指针。 在这里使用Contry指针的好处是什么? 我可以删除" *"并实现相同的行为? 如:

 var store = map[string]Country

感谢。

1 个答案:

答案 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"

}

使用指针将结构的地址存储在地图中,而不是整个结构的副本。对于像你的例子中的小结构,这不会有太大的区别。对于较大的结构,它可能会影响性能。