Кодирование Base64 (Base64 Encoding)|Base64 Encoding
#
// Go имеет встроенную поддержку [base64
// кодирования и декодирования](http://en.wikipedia.org/wiki/Base64).
package main
// Этот синтаксис импортирует пакет `encoding/base64` с
// с алиасом `b64`, вместо названия по-умолчанию. Это
// сэкономит нам немного места.
import (
b64 "encoding/base64"
"fmt"
)
func main() {
// `Строка`, которую мы будем кодировать/декодировать.
data := "abc123!?$*&()'-=@~"
// Go поддерживает оба стандарта и URL-совместимого
// base64. Кодируем, используя стандартнай кодировщик.
// Кодировщик требует `[]byte` на входе, поэтому
// мы конвертируем нашу `строку`.
sEnc := b64.StdEncoding.EncodeToString([]byte(data))
fmt.Println(sEnc)
// Декодирование может вернуть ошибку, которую можно
// проверить, если вы не уверены в корректности
// входных данных.
sDec, _ := b64.StdEncoding.DecodeString(sEnc)
fmt.Println(string(sDec))
fmt.Println()
// Это кодирование/декодирование использует
// URL-совместимый base64 формат.
uEnc := b64.URLEncoding.EncodeToString([]byte(data))
fmt.Println(uEnc)
uDec, _ := b64.URLEncoding.DecodeString(uEnc)
fmt.Println(string(uDec))
}
# Строка кодируется в слегка отличающиеся значения с
# помощью стандартных и URL-совместимые base64
# (`+` vs `-`), но они оба декодируются в исходную
# строку по желанию.
$ go run base64-encoding.go
YWJjMTIzIT8kKiYoKSctPUB+
abc123!?$*&()'-=@~
YWJjMTIzIT8kKiYoKSctPUB-
abc123!?$*&()'-=@~