Go 语言内置的 encoding/base64 提供了 base64 编码与解码功能。主要方法见 base64 package · go.dev

内置的 Encoding

  • StdEncoding —— 常规编码器
  • URLEncoding —— URL安全编码器
  • RawStdEncoding —— 常规编码器,末尾不补=
  • RawURLEncoding —— URL编码器,末尾不补=

base64 编码

package main

import (
	"encoding/base64"
	"fmt"
)

func main() {
	original := "Go"
	encoded := base64.StdEncoding.EncodeToString([]byte(original))
	fmt.Println(encoded)
}

base64 解码

package main

import (
	"encoding/base64"
	"fmt"
	"log"
)

func main() {
	decoded, err := base64.StdEncoding.DecodeString("R28=")
	if err != nil {
		log.Println(err)
	}
	fmt.Println(string(decoded))
}

URL base64编解码

package main

import (
	"encoding/base64"
	"fmt"
	"log"
)

func main() {
	uEnc := base64.URLEncoding.EncodeToString([]byte("Hello World"))
	fmt.Println(uEnc)

	uDec, err := base64.URLEncoding.DecodeString(uEnc)
	if err != nil {
		log.Println(err)
	}
	fmt.Println(string(uDec))
}