Menu
Coddy logo textTech

Comprobar pertenencia

Parte de la sección Lógica y Flujo del Journey de GO de Coddy. Lección 34 de 68.

Ahora que puedes añadir elementos a tu conjunto, la siguiente operación esencial es comprobar si existe un elemento específico en el conjunto. Aquí es donde el modismo «comma ok» de Go resulta increíblemente útil.

Para comprobar si existe un elemento en tu conjunto, usas la misma sintaxis que para comprobar si existe una clave en un mapa:

_, ok := colors["red"]
if ok {
    fmt.Println("Red is in the set")
} else {
    fmt.Println("Red is not in the set")
}

Se usa el guion bajo _ porque no nos importa el valor real (que siempre es una estructura vacía). Solo nos importa la variable booleana ok, que nos indica si la clave existe.

También puedes usar este patrón directamente en una instrucción if para obtener un código más conciso:

if _, exists := colors["blue"]; exists {
    fmt.Println("Blue is in the set")
}

Esta comprobación de pertenencia es rápida y eficiente, ya que aprovecha la implementación optimizada de map de Go para ofrecerte las ventajas de rendimiento de una verdadera estructura de datos de conjunto.

challenge icon

Desafío

Fácil

Construye un sistema de verificación de miembros del equipo que compruebe si determinadas personas forman parte de un equipo de proyecto utilizando el idiom de conjuntos de Go. Este desafío demuestra cómo usar el idiom comma ok para comprobar la pertenencia a un conjunto.

Recibirás dos entradas:

  • Una cadena que contiene miembros del equipo separados por comas (por ejemplo, "Alice,Bob,Charlie,Diana,Eve")
  • Una cadena que contiene las personas que se deben comprobar, separadas por comas (por ejemplo, "Bob,Frank,Alice,Grace,Charlie")

Tu tarea consiste en:

  1. Crear un conjunto utilizando el idiom de Go map[string]struct{} para almacenar a los miembros del equipo
  2. Analizar la primera cadena de entrada dividiéndola por comas para obtener los nombres individuales de los miembros del equipo
  3. Añadir cada miembro del equipo al conjunto utilizando el literal de estructura vacío {} como valor
  4. Analizar la segunda cadena de entrada dividiéndola por comas para obtener la lista de personas que se deben verificar
  5. Para cada persona que se debe comprobar, utilizar el idiom comma ok _, ok := teamSet[person] para comprobar su pertenencia
  6. Mostrar los resultados de la verificación para cada persona que se está comprobando:
    • Si la persona está en el equipo: "[person] is on the team"
    • Si la persona no está en el equipo: "[person] is not on the team"
  7. Después de comprobar a todas las personas, mostrar un resumen:
    • "Team size: [team_member_count]"
    • "People checked: [people_checked_count]"
    • "Team members found: [found_count]"
    • "Non-team members: [not_found_count]"

Utiliza el paquete strings para dividir las cadenas de entrada por comas. Este desafío demuestra cómo el idiom comma ok proporciona una forma segura y eficiente de comprobar la pertenencia a un conjunto de Go, devolviendo tanto el valor como un booleano que indica si la clave existe.

Pruébalo tú mismo

package main

import (
	"fmt"
	"strings"
)

func main() {
	// Leer entrada
	var teamMembersInput string
	var peopleToCheckInput string
	fmt.Scanln(&teamMembersInput)
	fmt.Scanln(&peopleToCheckInput)
	
	// Analizar cadenas de entrada
	teamMembers := strings.Split(teamMembersInput, ",")
	peopleToCheck := strings.Split(peopleToCheckInput, ",")
	
	// TODO: Escribe tu código debajo
	// Crear un conjunto usando map[string]struct{}
	// Añadir miembros del equipo al conjunto
	// Comprobar cada persona usando el idioma comma ok
	// Mostrar resultados de verificación y resumen
	
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de Go online