Biblioteca Padrão Go (Golang): visão geral completa
A linguagem Go (Golang), desenvolvida no Google, é conhecida por sua concisão, alta performance e suporte embutido para concorrência. No entanto, um de seus principais "superpoderes" é a poderosa e bem projetada biblioteca padrão. Ao contrário de muitas outras linguagens, onde é necessário adicionar dependências de terceiros para resolver tarefas básicas, o Go fornece tudo o que é necessário "pronto para uso". Neste artigo, faremos uma visão geral completa dos principais pacotes da biblioteca padrão do Go que serão úteis para todo desenvolvedor.
1. Entrada e saída e trabalho com arquivos: pacotes io, os, bufio
O pacote io é a base para todas as operações de entrada e saída. Suas interfaces io.Reader e io.Writer são uma das abstrações mais importantes do Go. Na prática, qualquer fonte de dados (arquivo, conexão de rede, string) pode ser representada como um Reader, e qualquer destino como um Writer.
O pacote os fornece funções para interagir com o sistema operacional: abrir/criar arquivos, ler diretórios, trabalhar com variáveis de ambiente.
O pacote bufio adiciona bufferização, o que acelera significativamente a leitura e escrita de grandes volumes de dados.
package main
import ( "bufio" "fmt" "os")
func main() { // Abrindo arquivo para leitura file, err := os.Open("example.txt") if err != nil { panic(err) } defer file.Close()
// Criando um scanner bufferizado scanner := bufio.NewScanner(file) for scanner.Scan() { fmt.Println(scanner.Text()) }
if err := scanner.Err(); err != nil { fmt.Fprintln(os.Stderr, "Erro de leitura:", err) }}2. Trabalho com texto e formatação: pacotes strings, fmt, strconv
O pacote strings contém centenas de funções úteis para trabalhar com strings: busca, substituição, divisão, junção, remoção de espaços em branco e muito mais. O pacote strconv é responsável pela conversão de strings em números (e vice-versa), além da análise de valores booleanos.
O pacote fmt é um "canivete suíço" para saída formatada. Ele implementa as funções Printf, Sprintf e Fprintf, que funcionam com qualquer tipo que implemente a interface Stringer.
package main
import ( "fmt" "strconv" "strings")
func main() { // Divisão de string parts := strings.Split("a,b,c", ",") fmt.Println(parts) // [a b c]
// Conversão de string para número num, _ := strconv.Atoi("42") fmt.Printf("Número: %d", num) // Número: 42
// Formatação com largura de campo fmt.Printf("|%10s|%5d|", "Olá", 123)}3. Rede e HTTP: pacotes net, net/http
O pacote net fornece primitivas de baixo nível para trabalhar com TCP/UDP, DNS e endereços IP. Mas a verdadeira "estrela" é o pacote net/http. Ele permite criar servidores e clientes HTTP completos sem nenhuma dependência de terceiros.
Graças ao http.ServerMux embutido e à abordagem de middleware, você pode facilmente rotear requisições, processar JSON, gerenciar cookies e sessões. A biblioteca padrão do Go é usada em produção por gigantes como Docker, Kubernetes e Dropbox.
package main
import ( "encoding/json" "fmt" "net/http")
type Response struct { Message string `json:"message"`}
func helloHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodGet { http.Error(w, "Método não suportado", http.StatusMethodNotAllowed) return }
resp := Response{Message: "Olá, mundo!"} w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(resp)}
func main() { http.HandleFunc("/api/hello", hello Também na biblioteca
Testes em Java: frameworks e ferramentas (JUnit, TestNG, Mockito)
Trabalhando com S3 e armazenamentos em nuvem em Kotlin: AWS SDK e MinIO
Event Bus e padrão Observer em Java: guia com exemplos
Monitoramento Node.js: ferramentas e bibliotecas para rastrear desempenho