Sitemap
Luiz Nison Filler

Luiz Nison Filler

Full-Stack Software Engineer 👨‍💻

%go: guia rápido de formatting verbs no Golang

2 min readMay 14, 2025

--

Press enter or click to view image in full size
Captura de tela do código de impressão de valores usando pacote fmt e resultados no terminal

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

  1. 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") // 616263

3. 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") // Golang

4. 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.Pokemon

5. Dica bônus:

É preferível usar fmt.Sprintf() se quiser salvar ou retornar a string formatada ao invés de imprimir direto no terminal.

Referências

  1. Package fmt
  2. W3 School — Go Formatting Verbs

--

--

Luiz Nison Filler
Luiz Nison Filler

Written by Luiz Nison Filler

Full-Stack Software Engineer 👨‍💻