%go: guia rápido de formatting verbs no Golang
Nesse começo de exploração do Golang, brincando e testando alguns conceitos via terminal, tenho utilizado bastante o package fmt, responsável por:
Package fmt implements formatted I/O with functions analogous to C’s printf and scanf. The format ‘verbs’ are derived from C’s but are simpler.
Algo simples, porém de grande utilidade em todas as linguagens, é a impressão formatada de valores, objetos, structs e afins — seja para exibir o valor de uma variável, debugar uma struct ou controlar como dados aparecem no terminal.
Para isso, o fmt conta com derivações simplificadas dos formatting verbs, os famosos % do nosso fmt.Printf() de cada dia. Entendê-los é essencial para escrever saídas mais claras e legíveis.
Get Luiz Nison Filler’s stories in your inbox
Join Medium for free to get updates from this writer.
Então, reuni os principais formatting verbs disponíveis em Go e que tenho usado, com exemplos simples e diretos para facilitar consultas e compartilhar aprendizados. Vale lembrar que há outros, de contextos e casos de uso bem específicos.
Possibilidades do % no fmt
- Verbos genéricos:
%v: valor padrão do tipo%+v: valor padrão com os nomes dos campos (para structs)%#v: representação Go-syntax (útil para depuração)
Exemplos:
// models/pokemons.go
type Pokemon struct {
Name string
Level int
}
// main.go
p := Pokemon{Name: "Bulbassaur", Level: 5}
fmt.Printf("%v \n", p) // {Bulbassaur 5}
fmt.Printf("%+v \n", p) // {Name:Bulbassaur Level:5}
fmt.Printf("%#v \n", p) // models.Pokemon{Name:"Bulbassaur", Level:5}2. Verbos específicos para type:
%%: imprime o símbolo de porcentagem%s: strings%q: strings entre aspas (de quotation marks)%t: booleanos%f: ponto flutuante%d: base 10/decimal (apenas para inteiros)%b: base 2/binário (apenas para inteiros)%o: base 8/octal (apenas para inteiros)%x: base 16/hexadecimal (para inteiros ou strings)
Exemplos:
fmt.Printf("%d \n", 42) // 42
fmt.Printf("%d%% \n", 42) // 42%
fmt.Printf("%f \n", 3.14) // 3.140000
fmt.Printf("%s \n", "GoLang") // GoLang
fmt.Printf("%q \n", "GoLang") // "GoLang"
fmt.Printf("%t \n", true) // true
fmt.Printf("%x \n", "abc") // 6162633. Controle de largura e precisão:
%5d: inteiro com largura mínima de 5 caracteres (se o número tiver menos dígitos, será alinhado à direita e preenchido com espaços à esquerda para completar essa largura mínima)%.2f: float com 2 casas decimais%5.2f: float com largura mínima de 5 e 2 casa decimais%10s: strings com largura de 10 caracteres e justificado à direita%-10s: strings com largura de 10 caracteres e justificado à esquerda
Exemplos:
fmt.Printf("%5d \n", 42) // 42
fmt.Printf("%.2f \n", 3.14) // 3.14
fmt.Printf("%5.2f \n", 3.14) // 3.14
fmt.Printf("%10s \n", "Golang") // Golang
fmt.Printf("%-10s \n", "Golang") // Golang4. Verbos para ponteiros e tipos especiais:
%p: pointeiros (enderço de memória)%T: tipagem da variável
Exemplos:
fmt.Printf("%p \n", &p) // 0xc000010220
fmt.Printf("%T \n", p) // models.Pokemon5. Dica bônus:
É preferível usar fmt.Sprintf() se quiser salvar ou retornar a string formatada ao invés de imprimir direto no terminal.






