Pular para conteúdo

Exercícios: Concorrência em Go ⚡

Instruções

Explore o poder das Goroutines e Channels.


🟢 Nível: Básico

  1. Goroutine: Crie uma função que imprima números de 1 a 10 e execute-a como uma goroutine no main. Verifique se o programa termina antes dela terminar (e como resolver isso com time.Sleep).
  2. Canais: Crie um canal de inteiros, envie o número 42 em uma goroutine e receba no main, imprimindo o valor.

🟡 Nível: Intermediário

  1. Buffer: Crie um canal com buffer de tamanho 2. Envie 2 mensagens sem precisar de uma goroutine consumidora imediata. O que acontece se enviar a 3ª?
  2. Soma Concorrente: Crie duas goroutines, cada uma calcula a soma de uma metade de um slice de números. Elas devem enviar os resultados parciais para um canal e o main deve somar os dois.

🔴 Nível: Desafio

5. Ping-Pong: Crie duas goroutines chamadas "Ping" e "Pong". Elas devem trocar uma "bola" (um contador que incrementa) através de um canal. O programa deve parar quando o contador chegar a 10. Use o select para monitorar a troca.

📚 Gabarito e Soluções Comentadas

Gabarito Explicado ### Questão 1: Goroutine **Resolução e Implementação:**
// Estrutura de implementação recomendada para Goroutine
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Concorrência em Go ⚡**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 2: Canais **Resolução e Implementação:**
// Estrutura de implementação recomendada para Canais
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Concorrência em Go ⚡**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 3: Buffer **Resolução e Implementação:**
// Estrutura de implementação recomendada para Buffer
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Concorrência em Go ⚡**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 4: Soma Concorrente **Resolução e Implementação:**
// Estrutura de implementação recomendada para Soma Concorrente
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Concorrência em Go ⚡**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 5: Ping-Pong **Resolução e Implementação:**
// Estrutura de implementação recomendada para Ping-Pong
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Concorrência em Go ⚡**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda.