Trabalhando com arquivos e o pacote os
O pacote os da biblioteca padrão do Go fornece uma interface multiplataforma para operações do sistema operacional, incluindo manipulação de arquivos e diretórios. Vamos começar com as operações fundamentais.
Categoria
O pacote os da biblioteca padrão do Go fornece uma interface multiplataforma para operações do sistema operacional, incluindo manipulação de arquivos e diretórios. Vamos começar com as operações fundamentais.
Em arquiteturas de microsserviços, uma única requisição do usuário pode atravessar dezenas de serviços distintos. Sem tracing distribuído, diagnosticar problemas de latência ou falhas em cascata torna-se uma tarefa quase impossível. O tracing distribuído permite rastrear o caminho completo de uma requisição através de múltiplos serviços, fornecendo visibilidade sobre cada etapa do processamento.
Structs em Go são tipos de dados compostos que agregam campos nomeados de diferentes tipos. Elas são fundamentais para modelar dados estruturados, permitindo criar tipos personalizados que representam entidades do mundo real.
Go não possui classes. Essa afirmação pode soar estranha para quem vem de linguagens como Java, Python ou C#, mas é uma escolha deliberada de design. Em vez do paradigma clássico de orientação a objetos com herança, polimorfismo por subclasse e encapsulamento rígido, Go oferece structs — agregados de dados que podem ser combinados com métodos para criar comportamentos.
Subtests são uma funcionalidade poderosa introduzida no Go 1.7 que permite organizar testes de forma hierárquica dentro de uma única função de teste. Em vez de criar múltiplas funções TestXxx para cada cenário, você pode agrupar casos relacionados usando t.Run().
Em Go, a estrutura switch é uma das ferramentas mais elegantes para controle de fluxo condicional. Diferente de linguagens como C, C++ ou Java, o switch em Go não exige a declaração explícita de break após cada case. A execução não "cai" automaticamente para o próximo caso — a menos que você explicitamente queira isso.
O pacote sync é um dos pilares da programação concorrente em Go, oferecendo primitivas de sincronização de baixo nível para coordenar o acesso a recursos compartilhados entre goroutines. Enquanto o modelo de concorrência do Go é frequentemente associado aos canais (CSP), o pacote sync resolve problemas específicos onde a exclusão mútua e a sincronização de estado são necessárias.
Table-driven tests são uma técnica de teste onde os casos de teste são definidos como uma lista (tabela) de structs, cada um contendo entradas, saídas esperadas e um nome descritivo. Em Go, essa abordagem tornou-se um padrão amplamente adotado, sendo recomendada até mesmo na documentação oficial da linguagem.
O pacote testing é a ferramenta nativa do Go para escrever testes unitários, de benchmark e exemplos executáveis. Sua estrutura é minimalista e poderosa, seguindo convenções específicas que facilitam a automação e integração com ferramentas de CI/CD.
O pacote net/http/httptest é uma ferramenta essencial do ecossistema Go para testar handlers HTTP sem a necessidade de iniciar um servidor real. Ele fornece utilitários que permitem simular requisições HTTP e capturar respostas de forma eficiente, tornando os testes rápidos, determinísticos e isolados.