Biblioteca Padrão Go (Golang): Visão Geral Completa
Go (ou Golang) é uma linguagem de programação compilada moderna do Google, criada para simplicidade, desempenho e confiabilidade. Uma das principais razões para sua popularidade é sua poderosa e bem documentada biblioteca padrão. Ao contrário de muitas outras linguagens, o Go vem com um rico conjunto de pacotes "prontos para uso" que cobrem praticamente todas as tarefas básicas: desde trabalhar com texto até construir serviços web de alta carga. Nesta visão geral, examinaremos detalhadamente os principais pacotes da biblioteca padrão Go com exemplos de código.
Pacote fmt: Entrada/Saída Formatada
Este é o primeiro pacote que todo desenvolvedor Go conhece. Ele fornece funções para saída formatada no console e leitura de dados.
package main
import "fmt"
func main() { name := "Go" version := 1.22 // Saída formatada fmt.Printf("Linguagem: %s, Versão: %.1f", name, version)
// Montar string sem saída message := fmt.Sprintf("Olá, %s!", name) fmt.Println(message)}Pacotes strings e strconv: Trabalhando com Strings
O pacote strings contém funções para pesquisar, substituir, dividir e unir strings. strconv é responsável por converter strings em números e vice-versa.
import ( "fmt" "strconv" "strings")
func main() { s := "Olá, mundo!" // Pesquisar substring if strings.Contains(s, "mundo") { fmt.Println("Encontrado") } // Dividir string parts := strings.Split(s, ", ") fmt.Println(parts[0]) // Olá
// Converter string para número num, _ := strconv.Atoi("42") fmt.Println(num + 8) // 50}Pacote net/http: Criando Servidores e Clientes HTTP
Um dos pacotes mais poderosos. Permite iniciar um servidor HTTP completo com poucas linhas de código. Amplamente utilizado em microsserviços e aplicações web.
package main
import ( "fmt" "net/http")
func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Olá, %s!", r.URL.Path[1:])}
func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil)}Pacote encoding/json: Trabalhando com JSON
Aplicações modernas trocam dados constantemente no formato JSON. O pacote encoding/json permite serializar e desserializar facilmente estruturas Go para JSON e vice-versa.
import ( "encoding/json" "fmt")
type User struct { Name string `json:"name"` Age int `json:"age"`}
func main() { user := User{Name: "Alexei", Age: 30} // Serialização para JSON jsonData, _ := json.Marshal(user) fmt.Println(string(jsonData)) // {"name":"Alexei","age":30}
// Desserialização de JSON var decoded User json.Unmarshal(jsonData, &decoded) fmt.Println(decoded.Name) // Alexei}Pacotes io e os: Trabalhando com Arquivos e Fluxos
O pacote os fornece funções para trabalhar com o sistema operacional: ler e escrever arquivos, trabalhar com variáveis de ambiente e argumentos de linha de comando. io contém interfaces para trabalhar com fluxos de dados (leitura/escrita).
import ( "io/ioutil" "os")
func main() { // Escrever em arquivo data := []byte("Olá, Go!") ioutil.WriteFile("exemplo.txt", data, 0644)
// Ler de arquivo content, _ := ioutil.ReadFile("exemplo.txt") os.Stdout.Write(content)}Pacote sync e goroutines: Concorrência
Go é famoso por seu suporte embutido à concorrência através de goroutines (threads leves) e canais. O pacote sync fornece primitivas de sincronização, como mutex
Também na biblioteca
Zod — poderosa biblioteca para validação de dados em TypeScript
Trabalhando com CSV em Rust: biblioteca csv e processamento de dados
once_cell para Rust: guia completo com exemplos práticos
Trabalhando com Markdown em TypeScript: bibliotecas, parsers e ferramentas
Filas de Tarefas em Go: Visão Geral de Bibliotecas e Ferramentas