Go Maps: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 5: Line 5:
=Internal=
=Internal=


* [[Go Concepts - The Type System#Built-in_Types|Go Built-in Types]]
* [[Go Concepts - The Type System#Built-in_Types|Built-in Types]]
* [[Go Arrays|Arrays]]
* [[Go Slices|Slices]]


=Overview=
=Overview=

Revision as of 22:07, 11 April 2016

External

Internal

Overview

A map is an unordered collection of key-value pairs.

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.