Go Em Exemplos: Base64 Encoding

Go fornece suporte nativo para base64 encoding/decoding.

package main

Esta sintaxe importa o pacote encoding/base64 com o nome b64 ao invés do nome padrão base64. Isso poupará algum espaço abaixo.

import (
    b64 "encoding/base64"
    "fmt"
)
func main() {

Aqui está a string que será objeto de encode/decode.

    data := "abc123!?$*&()'-=@~"

Go suporta tanto padrão quanto base64 compatível com URL. Aqui está como realizar encode usando o encoder padrão. O encoder requer []byte então antes é convertida a string para este tipo.

    sEnc := b64.StdEncoding.EncodeToString([]byte(data))
    fmt.Println(sEnc)

Realizar o Decode pode retornar um erro, o qual pode ser checado se ainda não se sabe se o input está bem formatado.

    sDec, _ := b64.StdEncoding.DecodeString(sEnc)
    fmt.Println(string(sDec))
    fmt.Println()

Este encode/decode está usando base-64 compatível com URL.

    uEnc := b64.URLEncoding.EncodeToString([]byte(data))
    fmt.Println(uEnc)
    uDec, _ := b64.URLEncoding.DecodeString(uEnc)
    fmt.Println(string(uDec))
}

As strings resultantes de ambos os métodos de encode, padrão e compatível com URL, são um pouco diferentes entre si (variando + e - ao final) mas se for realizado decode, ambas retornam a mesma string original, como esperado.

$ go run base64-encoding.go
YWJjMTIzIT8kKiYoKSctPUB+
abc123!?$*&()'-=@~
YWJjMTIzIT8kKiYoKSctPUB-
abc123!?$*&()'-=@~

Próximo exemplo: Reading Files.