Golang encoding 包详解
encoding
包在 Go 语言中是一个非常重要的包,它提供了对多种编码和压缩算法的支持。这个包包含了对 base32, base64, gob, json, xml 等编码格式的支持。
以下是一些使用 encoding
包的常见方法:
- Base64 编码和解码
Base64 是一种常用的编码格式,可以将二进制数据转换为只包含 A-Z, a-z, 0-9, +, / 字符的文本。
package main
import (
"encoding/base64"
"fmt"
)
func main() {
// 编码
data := "Hello, world!"
encoded := base64.StdEncoding.EncodeToString([]byte(data))
fmt.Println(encoded)
// 解码
decoded, err := base64.StdEncoding.DecodeString(encoded)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(decoded))
}
- Base32 编码和解码
Base32 和 Base64 类似,但它使用了一组大小为 32 的字符集。
package main
import (
"encoding/base32"
"fmt"
)
func main() {
// 编码
data := "Hello, world!"
encoded := base32.StdEncoding.EncodeToString([]byte(data))
fmt.Println(encoded)
// 解码
decoded, err := base32.StdEncoding.DecodeString(encoded)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(decoded))
}
- Gob 编码和解码
Gob 是 Go 语言特有的一种编码格式,主要用于序列化和反序列化数据。
package main
import (
"bytes"
"encoding/gob"
"fmt"
"log"
)
func main() {
// 准备数据
type Message struct {
Name string
Body string
Time int64
}
original := Message{"Hello", "Hello, world!", 0}
// 编码
buffer := &bytes.Buffer{}
encoder := gob.NewEncoder(buffer)
err := encoder.Encode(original)
if err != nil {
log.Fatal(err)
}
// 解码
decoded := Message{}
decoder := gob.NewDecoder(buffer)
err = decoder.Decode(&decoded)
if err != nil {
log.Fatal(err)
}
fmt.Println(decoded)
}
- JSON 编码和解码
JSON 是一种常用的数据交换格式,可以轻松地在不同的编程语言之间交换数据。
package main
import (
"encoding/json"
"fmt"
"log"
)
func main() {
// 准备数据
type Message struct {
Name string
Body string
Time int64
}
original := Message{"Hello", "Hello, world!", 0}
// 编码
jsonBytes, err := json.Marshal(original)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(jsonBytes))
// 解码
decoded := Message{}
err = json.Unmarshal(jsonBytes, &decoded)
i
评论已关闭