Go 的 Base64 编解码需用 encoding/base64 包,输入必须为 []byte,推荐 StdEncoding(标准)或 URLEncoding(URL 安全,用 -/_ 替代 +/,省略 =),解码务必检查 error,避免编码类型混用。
Go 语言标准库 encoding/base64 提供了简单高效的 Base64 编码与解码能力,无需额外依赖。核心是使用预定义的编码器(如 StdEncoding 或 URLEncoding),调用 EncodeToString 和 DecodeString 即可完成常见操作。
Base64 编码输入必须是 []byte,输出为字符串。推荐使用 base64.StdEncoding(RFC 4648 标准,含 +、/ 和 =):
base64.StdEncoding.EncodeToString([]byte("hello")) 得到 "aGVsbG8="
[]byte(s))解码需处理可能的错误(比如非法字符、长度不对、填充缺失等),务必检查返回的 error:
data, err := base64.StdEncoding.DecodeString("aGVsbG8=")data 是 []byte{104, 101, 108, 108, 111},即 []byte("hello")
=)在 URL、文件名或 JSON 中传输 Base64 时,应避免 +、/ 和 =。改用 base64.URLEncoding:
base64.URLEncoding.EncodeToString([]byte("hi!")) → "aGkhIQ=="(标准)→ 实际输出为 "aGkhIQ"(自动省略 =)- 替代 +,_ 替代 /,且不强制填充(但解码时仍支持带/不带 =)URLEncoding.DecodeString,兼容有无填充的输入高频场景下可复用编码器对象提升性能;也可自定义字符集(如用于 lega
cy 协议):
StdEncoding、URLEncoding、RawStdEncoding(无填充)NewEncoding(string),传入 64 字符字符串(如 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")基本上就这些。记住关键点:输入是字节、检查解码 error、URL 场景换 URLEncoding、别混用编码类型 —— Base64 在 Go 里真的不复杂但容易忽略细节。