Gerador de QR Code em Go (Golang): biblioteca go-qrcode
Os QR Codes se tornaram parte essencial da web moderna — desde links para sites até a transmissão de dados de contato. Se você desenvolve em Go (Golang) e deseja incorporar a geração de QR Codes em sua aplicação, a biblioteca go-qrcode é a solução ideal. Ela é leve, totalmente escrita em Go sem dependências externas e suporta todas as versões principais de QR Codes.
Instalação e configuração
Para começar, instale o pacote através do gerenciador de módulos padrão do Go:
go get github.com/skip2/go-qrcodeA biblioteca não requer bibliotecas de sistema adicionais — tudo funciona prontamente. Suporta Go versão 1.13 e superior.
Uso básico: criando seu primeiro QR Code
A maneira mais simples de gerar um QR Code é usar a função WriteFile. Ela cria uma imagem PNG diretamente no disco:
package main
import ( "github.com/skip2/go-qrcode")
func main() { err := qrcode.WriteFile("https://pythonlib.ru", qrcode.Medium, 256, "qr.png") if err != nil { panic(err) }}Neste exemplo, criamos um QR Code para a URL https://pythonlib.ru com nível de correção de erros Medium e tamanho de 256x256 pixels. O resultado é salvo no arquivo qr.png.
Parâmetros de geração
A função WriteFile aceita quatro argumentos:
- content (string) — dados para codificar (texto, URL, número de telefone, etc.)
- level (RecoveryLevel) — nível de correção de erros. Valores disponíveis:
qrcode.Low— 7% de recuperaçãoqrcode.Medium— 15% de recuperaçãoqrcode.High— 25% de recuperaçãoqrcode.Highest— 30% de recuperação
- size (int) — tamanho da imagem em pixels (geralmente de 128 a 1024)
- filename (string) — caminho para o arquivo de saída (extensão .png obrigatória)
Geração de QR Code em memória (sem salvar no disco)
Se você precisar obter o QR Code como bytes PNG (por exemplo, para enviar via HTTP ou salvar em um banco de dados), use o método PNG:
package main
import ( "bytes" "image/png" "log" "github.com/skip2/go-qrcode")
func main() { // Cria o QR Code qr, err := qrcode.New("https://pythonlib.ru", qrcode.Medium) if err != nil { log.Fatal(err) }
// Obtém a imagem como *image.RGBA img := qr.Image(256)
// Codifica em PNG e obtém os bytes var buf bytes.Buffer err = png.Encode(&buf, img) if err != nil { log.Fatal(err) }
// Agora buf.Bytes() contém os dados PNG log.Printf("QR Code gerado, tamanho: %d bytes", buf.Len())}Esta abordagem é conveniente para servidores web: você pode entregar o QR Code diretamente na resposta HTTP, sem criar arquivos temporários.
Configuração de cores e fundo
Por padrão, o QR Code é preto e branco, mas a biblioteca permite alterar as cores. Use os métodos ForegroundColor e BackgroundColor:
package main
import ( "image/color" "log" "github.com/skip2/go-qrcode")
func main() { qr, err := qrcode.New("https://pythonlib.ru", qrcode.High) if err != nil { log.Fatal(err) }
// Define a cor azul para os módulos e branco para o fundo qr.ForegroundColor = color.RGBA{0, 0, 255, 255} // azul qr.BackgroundColor = color.RGBA{255, 255, 255, 255} // branco
// Salva com as novas cores err = qr.WriteFile(256, "colorful_qr.png") if err != nil { log.Fatal(err) }} Também na biblioteca
Parsing de HTML em Swift (iOS/macOS): biblioteca SwiftSoup
Trabalhando com CSV em TypeScript: bibliotecas e exemplos de código
TBB (Intel Threading Building Blocks) para C++: guia completo com exemplos
Testes em Java: frameworks e ferramentas (JUnit, TestNG, Mockito)
Filas de tarefas para TypeScript: Bull, Agenda e Bee-Queue