Este projeto foi desenvolvido em Go com o objetivo de aplicar conceitos de concorrência utilizando goroutines, channels e select.
A aplicação realiza consultas simultâneas em duas APIs de CEP e retorna a resposta da mais rápida.
- Goroutines (execução paralela)
- Channels (comunicação entre goroutines)
- Select (controle de concorrência)
- Timeout (controle de tempo)
- Consumo de APIs externas com
net/http
-
O usuário informa um CEP via linha de comando
-
O sistema faz duas requisições simultâneas:
- BrasilAPI
- ViaCEP
-
A primeira resposta recebida é utilizada
-
A outra resposta é ignorada
-
Caso nenhuma responda em até 1 segundo, ocorre timeout
- Go instalado (versão 1.20+ recomendada)
go run cmd/cep-race/main.go 01001000API: BrasilAPI
CEP: 01001-000
Rua: Praça da Sé
Bairro: Sé
Cidade: São Paulo
UF: SPCaso nenhuma API responda em até 1 segundo:
timeoutcmd/
└── cep-race/
internal/
├── api/
├── dto/
└── entity/
Este projeto tem fins educacionais e demonstra conceitos fundamentais de concorrência em Go.