66 lines
1.7 KiB
Markdown
66 lines
1.7 KiB
Markdown
|
---
|
||
|
title: Go Maps
|
||
|
---
|
||
|
## Go Maps
|
||
|
|
||
|
A map, called a _dictionary_ in other languages, "maps" keys to values.
|
||
|
A map is declared like this:
|
||
|
```go
|
||
|
var m map[Key]Value
|
||
|
```
|
||
|
This map has no keys and no keys can be added to it.
|
||
|
To create a map, use the `make` function:
|
||
|
```go
|
||
|
m = make(map[Key]Value)
|
||
|
```
|
||
|
Anything can be used as a key or as a value.
|
||
|
|
||
|
### Modifying maps
|
||
|
Here are some common action with maps.
|
||
|
|
||
|
#### Inserting/Changing elements
|
||
|
Create or change element `foo` in map `m`:
|
||
|
```go
|
||
|
m["foo"] = bar
|
||
|
```
|
||
|
#### Getting elements
|
||
|
Get element with key `foo` in map `m`:
|
||
|
```go
|
||
|
element = m["foo"]
|
||
|
```
|
||
|
|
||
|
#### Deleting elements
|
||
|
Delete element with key `foo` in map `m`:
|
||
|
```go
|
||
|
delete(m, "foo")
|
||
|
```
|
||
|
|
||
|
#### Check if a key has been used
|
||
|
Check if key `foo` has been used in map `m`:
|
||
|
```go
|
||
|
element, ok = m["foo"]
|
||
|
```
|
||
|
If `ok` is `true`, the key has been used and `element` holds the value at `m["foo"]`.
|
||
|
If `ok` is `false`, the key has not been used and `element` holds its zero-values.
|
||
|
|
||
|
### Map literals
|
||
|
You can directly create map literals:
|
||
|
```go
|
||
|
var m = map[string]bool{
|
||
|
"Go": true,
|
||
|
"JavaScript":false,
|
||
|
}
|
||
|
|
||
|
m["Go"] // true
|
||
|
m["JavaScript"] = true // Set Javascript to true
|
||
|
delete(m, "JavaScript") // Delete "JavaScript" key and value
|
||
|
language, ok = m["C++"] // ok is false, language is bool's zero-value (false)
|
||
|
```
|
||
|
|
||
|
#### More Information:
|
||
|
<!-- Please add any articles you think might be helpful to read before writing the article -->
|
||
|
* [A Tour of Go](https://tour.golang.org/moretypes/19)
|
||
|
* [Go By Example](https://gobyexample.com/maps)
|
||
|
* [Golang Book](https://www.golang-book.com/books/intro/6#section3)
|
||
|
* [The Go Programming Language Specification](https://golang.org/ref/spec#Making_slices_maps_and_channels)
|