0Pricing
Go Academy · Lección

Comprobación de existencia

Conozca el modismo comma-ok

Comprobación de existencia es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.

Las claves ausentes devuelven el valor cero

Cuando lee una clave que no existe, Go devuelve el valor cero del tipo de valor, no un error. Para int es 0 y para string es la cadena vacía.

package main

import "fmt"

func main() {
	m := map[string]int{"a": 5}
	fmt.Println(m["missing"])
}

El problema de la ambigüedad

Si se devuelve el valor 0, ¿cómo puede saber si la clave existe con el valor 0 o si simplemente está ausente? No puede determinarlo solo a partir del valor.

El modismo comma-ok

El acceso a un mapa puede devolver dos valores: el valor y un booleano. El booleano es true si la clave existe. Este es el modismo comma-ok.

package main

import "fmt"

func main() {
	m := map[string]int{"a": 0}
	val, ok := m["a"]
	fmt.Println(val, ok)
}

Diferenciación de claves ausentes

Ahora puede distinguirlas. Una clave presente produce ok = true, incluso si su valor es el valor cero.

package main

import "fmt"

func main() {
	m := map[string]int{"a": 0}
	_, okA := m["a"]
	_, okB := m["b"]
	fmt.Println("a exists:", okA, "b exists:", okB)
}

Compruebe antes de actuar

Un patrón habitual consiste en usar comma-ok dentro de un if para actuar solo cuando la clave está presente.

package main

import "fmt"

func main() {
	prices := map[string]int{"pen": 3}
	if p, ok := prices["pen"]; ok {
		fmt.Println("price is", p)
	} else {
		fmt.Println("not found")
	}
}

Ignorar el valor

Si solo le interesa saber si existe una clave, use el identificador en blanco _ para el valor.

package main

import "fmt"

func main() {
	seen := map[string]bool{"x": true}
	_, exists := seen["x"]
	fmt.Println("x seen:", exists)
}

Contar apariciones

Comma-ok combina bien con los contadores. Pero tenga en cuenta que, incluso sin ok, m[key]++ funciona porque una clave ausente empieza en cero.

package main

import "fmt"

func main() {
	counts := map[string]int{}
	for _, w := range []string{"a", "b", "a"} {
		counts[w]++
	}
	fmt.Println(counts)
}

Valores predeterminados de forma segura

Puede proporcionar un valor alternativo cuando falta una clave usando comma-ok y una variable predeterminada.

package main

import "fmt"

func main() {
	cfg := map[string]string{}
	lang, ok := cfg["lang"]
	if !ok {
		lang = "en"
	}
	fmt.Println("lang:", lang)
}

Comma-ok más allá de los mapas

La forma de dos valores también aparece al recibir datos de canales y en las aserciones de tipo. El patrón es coherente: el segundo valor indica si la operación tuvo éxito.

package main

import "fmt"

func main() {
	var i interface{} = "hello"
	s, ok := i.(string)
	fmt.Println(s, ok)
}

Comprobación de pertenencia a un conjunto

Los mapas con valores booleanos o de estructura vacía se usan a menudo para realizar un seguimiento de la pertenencia. Comma-ok responde claramente si un elemento está en el conjunto.

package main

import "fmt"

func main() {
	allowed := map[string]struct{}{"read": {}, "write": {}}
	_, ok := allowed["delete"]
	fmt.Println("delete allowed:", ok)
}

Práctica recomendada

Use siempre comma-ok cuando un valor cero pueda ser un valor almacenado válido. Elimina la ambigüedad y deja clara la intención.

Comprobación rápida

Lee val, ok := m["x"] y obtiene val = 0, ok = true. ¿Qué significa?

Resumen

Comprobación de existencia con comma-ok:

  • Las claves ausentes devuelven el valor cero
  • val, ok := m[key] indica la presencia en ok
  • Úselo siempre que cero pueda ser un valor real

Preguntas frecuentes

¿La lección «Comprobación de existencia» es gratis?

Sí — el texto completo de «Comprobación de existencia» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Comprobación de existencia»?

Conozca el modismo comma-ok Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Go Academy?

No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Comprobación de existencia»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Go Academy?

Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Internals de los mapas
  2. Comprobación de existencia
  3. Mapas como conjuntos
  4. Iteración y orden
← Volver a Go Academy