Кодування Base64|Base64 Encoding
#
// Go підтримує кодування/декодування
// [base64](https://uk.wikipedia.org/wiki/Base64).
package main
// для початку давйте включимо для імпорту пакет `encoding/base64`,
// до якого будемо звертатись, як до `b64` замість стандартного
// звернення `base64`.
import (
b64 "encoding/base64"
"fmt"
)
func main() {
// Це рядок - що ми будемо кодувати та декодувати.
data := "abc123!?$*&()'-=@~"
// Go підтримує як стандартний так і URL-сумісний base64.
// Спочатку наведемо приклад використання стандартного base64.
// Механізм кодування потребує зріз байтів, отож ми
// конвертуємо наш рядок до потрібного типу.
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 (різниця полягає
# в закриваючому символі `+` та `-`), але зворотні
# результати кодування відповідають оригінальному рядку,
# як і було задумано.
$ go run base64-encoding.go
YWJjMTIzIT8kKiYoKSctPUB+
abc123!?$*&()'-=@~
YWJjMTIzIT8kKiYoKSctPUB-
abc123!?$*&()'-=@~