80 lines
1.8 KiB
Markdown
80 lines
1.8 KiB
Markdown
---
|
|
title: Go Maps
|
|
localeTitle: Ir Mapas
|
|
---
|
|
## Ir Mapas
|
|
|
|
Un mapa, llamado _diccionario_ en otros idiomas, "asigna" claves a valores. Un mapa se declara así:
|
|
|
|
```go
|
|
var m map[Key]Value
|
|
```
|
|
|
|
Este mapa no tiene claves y no se le pueden agregar claves. Para crear un mapa, usa la función `make` :
|
|
|
|
```go
|
|
m = make(map[Key]Value)
|
|
```
|
|
|
|
Cualquier cosa puede ser usada como una clave o como un valor.
|
|
|
|
### Modificando mapas
|
|
|
|
Aquí hay algunas acciones comunes con los mapas.
|
|
|
|
#### Insertando / Cambiando elementos
|
|
|
|
Crear o cambiar el elemento `foo` en el mapa `m` :
|
|
|
|
```go
|
|
m["foo"] = bar
|
|
```
|
|
|
|
#### Obteniendo elementos
|
|
|
|
Obtener elemento con clave `foo` en el mapa `m` :
|
|
|
|
```go
|
|
element = m["foo"]
|
|
```
|
|
|
|
#### Borrando elementos
|
|
|
|
Eliminar elemento con clave `foo` en el mapa `m` :
|
|
|
|
```go
|
|
delete(m, "foo")
|
|
```
|
|
|
|
#### Compruebe si se ha utilizado una clave
|
|
|
|
Compruebe si la clave `foo` se ha utilizado en el mapa `m` :
|
|
|
|
```go
|
|
element, ok = m["foo"]
|
|
```
|
|
|
|
Si `ok` es `true` , la clave se ha utilizado y el `element` mantiene el valor en `m["foo"]` . Si `ok` es `false` , la clave no se ha utilizado y el `element` mantiene sus valores cero.
|
|
|
|
### Mapa literales
|
|
|
|
Puedes crear literales de mapas directamente:
|
|
|
|
```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)
|
|
```
|
|
|
|
#### Más información:
|
|
|
|
* [Un tour de go](https://tour.golang.org/moretypes/19)
|
|
* [Ir por ejemplo](https://gobyexample.com/maps)
|
|
* [Libro de golang](https://www.golang-book.com/books/intro/6#section3)
|
|
* [La especificación del lenguaje de programación Go](https://golang.org/ref/spec#Making_slices_maps_and_channels) |