映射
映射
Go语言中的映射,就好比其他语言中的hash表或者字典。它们的工作方式就是:定义键和值,并且可以获取,设置和删除其中的值。
映射和切片一样,使用 make 方法来创建。让我们来看看一个例子:
func main() {
  lookup := make(map[string]int)
  lookup["goku"] = 9001
  power, exists := lookup["vegeta"]
  // prints 0, false
  // 0 is the default value for an integer
  fmt.Println(power, exists)
}我们使用 len方法类获取映射的键的数量。使用delete方法来删除一个键对应的值:
// returns 1
total := len(lookup)
// has no return, can be called on a non-existing key
delete(lookup, "goku")映射是动态变化的。然而我们可以通过传递第二个参数到 make方法来设置一个初始大小:
lookup := make(map[string]int, 100)如果你事先知道映射会有多少键值,定义一个初始大小将会帮助改善性能。
当你需要将映射作为结构体字段的时候,你可以这样定义它:
type Saiyan struct {
  Name string
  Friends map[string]*Saiyan
}初始上述结构体的一种方式是:
goku := &Saiyan{
  Name: "Goku",
  Friends: make(map[string]*Saiyan),
}
goku.Friends["krillin"] = ... //加载或者创建 KrillinGo 还有一种定义和初始化值的方式。像 make,这种特定用于映射和数组。我们可以定义为复合方式:
lookup := map[string]int{
  "goku": 9001,
  "gohan": 2044,
}我们可以使用 for 组合 range 关键字迭代映射:
for key, value := range lookup {
  ...
}迭代映射是没有顺序的。每次迭代查找将会随机返回键值对。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
 
           Go 简易教程
Go 简易教程 
             
             关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号 
 
推荐文章: