在Go语言中,并没有直接被称为“字典”的数据结构,但你可以使用map类型来模拟字典的行为。map是一种引用类型,它将一组键(key)映射到一组值(value)。一个键可以映射到最多一个值。

下面是如何在Go语言中创建和使用map(即字典)的示例:

声明和初始化map

你可以使用make函数来初始化一个空的map,或者直接使用map字面量来初始化一个包含一些键值对的map。

使用make函数
go复制代码
 package main  
 
   
 
 import "fmt"  
 
   
 
 func main() {  
 
     // 声明一个map,键的类型为string,值的类型为int  
 
     m := make(map[string]int)  
 
   
 
     // 添加键值对  
 
     m["one"] = 1  
 
     m["two"] = 2  
 
   
 
     // 访问map中的值  
 
     fmt.Println(m["one"]) // 输出: 1  
 
   
 
     // 检查键是否存在  
 
     value, exists := m["three"]  
 
     if !exists {  
 
         fmt.Println("Key does not exist")  
 
     }  
 
 }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
使用map字面量
go复制代码
 package main  
 
   
 
 import "fmt"  
 
   
 
 func main() {  
 
     // 使用map字面量初始化map  
 
     m := map[string]int{  
 
         "one":   1,  
 
         "two":   2,  
 
         "three": 3,  
 
     }  
 
   
 
     // 访问map中的值  
 
     fmt.Println(m["two"]) // 输出: 2  
 
   
 
     // 遍历map  
 
     for key, value := range m {  
 
         fmt.Println(key, value)  
 
     }  
 
 }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.

遍历map

如上例所示,你可以使用range关键字来遍历map中的所有键值对。遍历的顺序是随机的,每次程序运行时可能不同。

删除map中的元素

你可以使用内置的delete函数来从map中删除键值对。

go复制代码
 delete(m, "two") // 从m中删除键为"two"的键值对
  • 1.
  • 2.

注意事项

  • 当你从map中读取一个不存在的键时,会得到该map值类型的零值。对于int类型,零值是0;对于string类型,零值是空字符串""。
  • map是引用类型,当你将一个map赋值给另一个变量时,两个变量将引用同一个map对象。对任一变量的修改都会影响到另一个。
  • 如果你想创建一个不可变的map(即其内容在创建后不能被修改),你需要在逻辑上确保不修改它,因为Go语言本身不提供内置的不可变map类型。