Go предоставляет другой важный тип данных с именем map, который сопоставляет уникальные ключи со значениями. Ключ — это объект, который вы используете для получения значения позднее. Имея ключ и значение, вы можете сохранить это значение в объекте Map. После того, как значение сохранено, вы можете получить его, используя его ключ.
Определение карты
Вы должны использовать функцию make для создания карты.
/* 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)
пример
В следующем примере показано, как создать и использовать карту.
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 () используется для удаления записи с карты. Требуется карта и соответствующий ключ, который необходимо удалить. Например —
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]) } }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —