Go Maps: Difference between revisions
Line 11: | Line 11: | ||
=Overview= | =Overview= | ||
A map is an unordered collection of key-value pairs. | A map is an unordered collection of key-value pairs. The map implementation uses the key as an index, quickly retrieving the associated value. | ||
Lexically, a map type is a [[Go_Concepts_-_The_Type_System#Reference_Types|reference type]]. The map instances must be initialized before attempting to use into them, either by using the <tt>[[#make.28.29|make()]]</tt> function or a map literal, otherwise you will get a runtime error, because a [[Go_Concepts_-_The_Type_System#Zero_Value|zero value]] for a map is <tt>nil</tt>: | Lexically, a map type is a [[Go_Concepts_-_The_Type_System#Reference_Types|reference type]]. The map instances must be initialized before attempting to use into them, either by using the <tt>[[#make.28.29|make()]]</tt> function or a map literal, otherwise you will get a runtime error, because a [[Go_Concepts_-_The_Type_System#Zero_Value|zero value]] for a map is <tt>nil</tt>: |
Revision as of 22:08, 11 April 2016
External
- Go Specification - Deletion of Map elements https://golang.org/ref/spec#Deletion_of_map_elements
Internal
Overview
A map is an unordered collection of key-value pairs. The map implementation uses the key as an index, quickly retrieving the associated value.
Lexically, a map type is a reference type. The map instances must be initialized before attempting to use into them, either by using the make() function or a map literal, otherwise you will get a runtime error, because a zero value for a map is nil:
panic: assignment to entry in nil map
Declaration
Long Declaration
var map_identifier map[key_type]value_type
Example of a map of string to ints:
var m map[string]int
Declaration and initialization:
var m map[string]string = make(map[string]string)
Short Declaration
m := make(map[string]string)
m := map[string]string { "A": "B", "C": "D", }
Map Operators and Functions
Indexing Operator
Indexing operator [] returns the copy of the value corresponding to the specified key and a boolean value that says whether the key exists or not. If the key does not exist, the zero value for the value type is returned.
value := m["key"] // only the first return value can be used, as long as we are prepared to deal with the zero value value, exists := m["key"]
Idiom:
if value, exists := m["key"]; exists { // it exists ... }
Map Length
len() returns the number of keys.
delete()
Removes the element corresponding to the given key from the map:
delete(m, "something")
It is a no-op if the key does not exist.
make()
The make() function creates the map:
m := make(map[key_type]value_type)
Note that make() returns the map instance, not a pointer.