Go语言 映射(map)

  • map

    Go提供了另一个重要的数据类型,称为map,它将唯一键映射到值。键是一个对象,您可以在以后使用它来检索值。给定键和值,您可以将值存储在Map对象中。值存储后,可以使用其键检索它
  • 定义map

    您必须使用make函数来创建map。
    
    /* declare a variable, by default map will be nil*/
    var map_variable map[key_data_type]value_data_type
    
    /* define the map as nil map can not be assigned any value*/
    map_variable = make(map[key_data_type]value_data_type)
    
    以下示例说明了如何创建和使用map-
    
    package main
    
    import "fmt"
    
    func main() {
       var countryCapitalMap map[string]string
       /* create a map*/
       countryCapitalMap = make(map[string]string)
       
       /* insert key-value pairs in the map*/
       countryCapitalMap["France"] = "Paris"
       countryCapitalMap["Italy"] = "Rome"
       countryCapitalMap["Japan"] = "Tokyo"
       countryCapitalMap["India"] = "New Delhi"
       
       /* print map using keys*/
       for country := range countryCapitalMap {
          fmt.Println("Capital of",country,"is",countryCapitalMap[country])
       }
       
       /* test if entry is present in the map or not*/
       capital, ok := countryCapitalMap["United States"]
       
       /* if ok is true, entry is present otherwise entry is absent*/
       if(ok){
          fmt.Println("Capital of United States is", capital)  
       } else {
          fmt.Println("Capital of United States is not present") 
       }
    }
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    Capital of India is New Delhi
    Capital of France is Paris
    Capital of Italy is Rome
    Capital of Japan is Tokyo
    Capital of United States is not present
    
  • delete()函数

    delete()函数用于从map中删除条目。它需要映射和要删除的对应key。例如-
    
    package main
    
    import "fmt"
    
    func main() {   
       /* create a map*/
       countryCapitalMap := map[string] string {"France":"Paris","Italy":"Rome","Japan":"Tokyo","India":"New Delhi"}
       
       fmt.Println("Original map")   
       
       /* print map */
       for country := range countryCapitalMap {
          fmt.Println("Capital of",country,"is",countryCapitalMap[country])
       }
       
       /* delete an entry */
       delete(countryCapitalMap,"France");
       fmt.Println("Entry for France is deleted")  
       
       fmt.Println("Updated map")   
       
       /* print map */
       for country := range countryCapitalMap {
          fmt.Println("Capital of",country,"is",countryCapitalMap[country])
       }
    }
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    Original Map
    Capital of France is Paris
    Capital of Italy is Rome
    Capital of Japan is Tokyo
    Capital of India is New Delhi
    Entry for France is deleted
    Updated Map
    Capital of India is New Delhi
    Capital of Italy is Rome
    Capital of Japan is Tokyo