发布时间:2024-12-27 03:34:33
Base64编码常用于在网络中传输二进制数据。该编码算法将原始数据转换为一串ASCII字符,使其适合通过网络进行传输。Golang的encoding/base64包提供了一系列函数来进行Base64编码和解码的操作。以下是一些常见的用法:
- 使用EncodeToString
函数将原始数据编码为Base64字符串。例如:
data := []byte("hello")
encodedString := base64.StdEncoding.EncodeToString(data)
编码后的字符串为aGVsbG8=
。
- 使用DecodeString
函数将Base64字符串解码为原始数据。例如:
encodedString := "aGVsbG8="
decodedData, err := base64.StdEncoding.DecodeString(encodedString)
if err != nil {
fmt.Println("解码失败")
}
fmt.Println(string(decodedData))
解码后的数据为hello
。
在与前端进行数据交互时,经常需要将结构体或其他格式的数据编码为JSON字符串。Golang的encoding/json包提供了相应的函数来处理JSON编码和解码的任务。以下是一些常用的方法:
- 使用Marshal
函数将数据编码为JSON格式。例如:
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
person := Person{"Tom", 25}
jsonData, err := json.Marshal(person)
if err != nil {
fmt.Println("编码失败")
}
fmt.Println(string(jsonData))
编码后的JSON数据为{"name":"Tom","age":25}
。
- 使用Unmarshal
函数将JSON字符串解码为数据。例如:
jsonString := `{"name":"Tom","age":25}`
var person Person
err := json.Unmarshal([]byte(jsonString), &person)
if err != nil {
fmt.Println("解码失败")
}
fmt.Println(person.Name, person.Age)
解码后的结果为Tom 25
。
当我们需要传输或存储大规模的数据时,可以使用压缩和解压缩来减小数据的体积。Golang的encoding/gzip包提供了压缩和解压缩的函数。以下是一些常见用法:
- 使用NewWriter
函数创建一个用于压缩数据的Writer。例如:
file, err := os.Create("compressed.txt.gz")
if err != nil {
fmt.Println("创建文件失败")
}
gzipWriter := gzip.NewWriter(file)
defer gzipWriter.Close()
通过给该Writer写入原始数据,再调用Close
方法即可得到压缩后的数据。
- 使用NewReader
函数创建一个用于解压缩数据的Reader。例如:
file, err := os.Open("compressed.txt.gz")
if err != nil {
fmt.Println("打开文件失败")
}
gzipReader, err := gzip.NewReader(file)
if err != nil {
fmt.Println("创建解压缩Reader失败")
}
defer gzipReader.Close()
通过调用该Reader的Read
方法即可获得解压缩后的数据。