Go provides built-in support for [base64 encoding/decoding](http://en.wikipedia.org/wiki/Base64). | ||
package main |
||
This syntax imports the `encoding/base64` package with the `b64` name instead of the default `base64`. It'll save us some space below. | import ( |
|
b64 "encoding/base64" |
||
"fmt" |
||
) |
||
func main() { |
||
Here's the `string` we'll encode/decode. | data := "abc123!?$*&()'-=@~" |
|
Go supports both standard and URL-compatible base64. Here's how to encode using the standard encoder. The encoder requires a `[]byte` so we convert our `string` to that type. | sEnc := b64.StdEncoding.EncodeToString([]byte(data)) |
|
fmt.Println(sEnc) |
YWJjMTIzIT8kKiYoKSctPUB+ |
|
Decoding may return an error, which you can check if you don't already know the input to be well-formed. | sDec, _ := b64.StdEncoding.DecodeString(sEnc) |
|
fmt.Println(string(sDec)) |
abc123!?$*&()'-=@~ |
|
fmt.Println() |
||
This encodes/decodes using a URL-compatible base64 format. | uEnc := b64.URLEncoding.EncodeToString([]byte(data)) |
|
fmt.Println(uEnc) |
YWJjMTIzIT8kKiYoKSctPUB- |
|
uDec, _ := b64.URLEncoding.DecodeString(uEnc) |
||
fmt.Println(string(uDec)) |
abc123!?$*&()'-=@~ |
|
} |