Encodage Base64
#
// Go propose un support natif pour l'encodage et le
// décodage en [base64](http://fr.wikipedia.org/wiki/Base64).
package main
// Cette syntaxe importe le package `encoding/base64`
// avec le nom `b64` au lieu du nomp par défaut `base64`.
// Cela nous fait gagner un peu de place en dessous.
import b64 "encoding/base64"
import "fmt"
func main() {
// Voici la chaîne que l'on va encoder et décoder.
data := "abc123!?$*&()'-=@~"
// Go support à la fois le base64 standard et celui
// compatible avec les URLs.
// Voici comment encoder avec l'encodeur standard. Il
// a besoin d'un `[]byte` donc on va faire un cast de
// notre `string` vers ce type.
sEnc := b64.StdEncoding.EncodeToString([]byte(data))
fmt.Println(sEnc)
// Le décodage peut renvoyer une erreur, que l'on
// peut vérifier si vous ne savez pas déjà si
// l'entrée est correctement formée.
sDec, _ := b64.StdEncoding.DecodeString(sEnc)
fmt.Println(string(sDec))
fmt.Println()
// Ceci encode et décode selone le format base64
// compatible avec les URLs.
uEnc := b64.URLEncoding.EncodeToString([]byte(data))
fmt.Println(uEnc)
uDec, _ := b64.URLEncoding.DecodeString(uEnc)
fmt.Println(string(uDec))
}
# La chaîne est encodée un peu différente avec les deux
# encodeurs (`+` à la fin au lieu de `-`), mais elles se
# décodent vers la chaîne de départ comme désiré.
$ go run base64-encoding.go
YWJjMTIzIT8kKiYoKSctPUB+
abc123!?$*&()'-=@~
YWJjMTIzIT8kKiYoKSctPUB-
abc123!?$*&()'-=@~