Menu
Coddy logo textTech

Verificando a Existência de Elementos

Parte da seção Lógica & Fluxo do Journey de GO da Coddy — lição 34 de 68.

Agora que você pode adicionar elementos ao seu conjunto, a próxima operação essencial é verificar se um elemento específico existe no conjunto. É aqui que o idioma "comma ok" do Go se torna incrivelmente útil.

Para verificar se um elemento existe em seu conjunto, você usa a mesma sintaxe que usaria para verificar uma chave em um mapa:

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

O sublinhado _ é usado porque não nos importamos com o valor real (que é sempre uma struct vazia). Só nos importamos com a variável booleana ok, que nos diz se a chave existe.

Você também pode usar este padrão diretamente em uma instrução if para um código mais conciso:

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

Este teste de pertinência é rápido e eficiente, aproveitando a implementação otimizada de map do Go para oferecer os benefícios de desempenho de uma verdadeira estrutura de dados de conjunto (set).

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

challenge icon

Desafio

Fácil

Construa um sistema de verificação de membros de equipe que verifica se pessoas específicas fazem parte de uma equipe de projeto usando o idioma de conjunto (set) do Go. Este desafio demonstra como usar o idioma comma ok para testar a associação em um conjunto.

Você receberá duas entradas:

  • Uma string contendo membros da equipe separados por vírgulas (ex: "Alice,Bob,Charlie,Diana,Eve")
  • Uma string contendo pessoas para verificar separadas por vírgulas (ex: "Bob,Frank,Alice,Grace,Charlie")

Sua tarefa é:

  1. Criar um conjunto usando o idioma do Go map[string]struct{} para armazenar os membros da equipe
  2. Analisar a primeira string de entrada dividindo-a por vírgulas para obter os nomes individuais dos membros da equipe
  3. Adicionar cada membro da equipe ao seu conjunto usando o literal de struct vazia {} como valor
  4. Analisar a segunda string de entrada dividindo-a por vírgulas para obter a lista de pessoas a serem verificadas
  5. Para cada pessoa a verificar, use o idioma comma ok _, ok := teamSet[person] para testar a associação
  6. Exibir os resultados da verificação para cada pessoa sendo verificada:
    • Se a pessoa estiver na equipe: "[person] is on the team"
    • Se a pessoa não estiver na equipe: "[person] is not on the team"
  7. Após verificar todas as pessoas, exiba um resumo:
    • "Team size: [team_member_count]"
    • "People checked: [people_checked_count]"
    • "Team members found: [found_count]"
    • "Non-team members: [not_found_count]"

Use o pacote strings para dividir as strings de entrada por vírgulas. Este desafio demonstra como o idioma comma ok fornece uma maneira segura e eficiente de verificar a associação em um conjunto Go, retornando tanto o valor quanto um booleano indicando se a chave existe.

Folha de consulta

Para verificar se um elemento existe em um conjunto (map), use o idioma "comma ok":

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

O sublinhado _ descarta o valor, pois nos importamos apenas com a variável booleana ok que indica se a chave existe.

Você também pode usar este padrão diretamente em uma instrução if:

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

Experimente você mesmo

package main

import (
	"fmt"
	"strings"
)

func main() {
	// Ler entrada
	var teamMembersInput string
	var peopleToCheckInput string
	fmt.Scanln(&teamMembersInput)
	fmt.Scanln(&peopleToCheckInput)
	
	// Analisar as strings de entrada
	teamMembers := strings.Split(teamMembersInput, ",")
	peopleToCheck := strings.Split(peopleToCheckInput, ",")
	
	// TODO: Escreva seu código abaixo
	// Criar um conjunto usando map[string]struct{}
	// Adicionar membros da equipe ao conjunto
	// Verificar cada pessoa usando o idioma comma ok
	// Exibir resultados da verificação e resumo
	
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo