字符串压缩和解压缩是常见的数据处理操作之一。在Go语言中,可以使用标准库中的compress/flate和compress/zlib包来实现字符串的压缩和解压缩。

压缩字符串:

使用compress/flate包实现字符串的压缩,示例代码如下:

package main

import (
    "bytes"
    "compress/flate"
    "fmt"
)

func main() {
    str := "pidancode.com"
    fmt.Println("原字符串:", str)
    var buffer bytes.Buffer
    writer, _ := flate.NewWriter(&buffer, flate.DefaultCompression)
    writer.Write([]byte(str))
    writer.Close()
    fmt.Println("压缩后:", buffer.String())
}

解压缩字符串:

使用compress/flate包实现字符串的解压缩,示例代码如下:

package main

import (
    "bytes"
    "compress/flate"
    "fmt"
)

func main() {
    compressedStr := "\xab\x85\xb1]\x03\x00\x004\x00\xedIQ\xac\x0e\x00o\x97"
    fmt.Println("压缩后:", compressedStr)
    var buffer bytes.Buffer
    buffer.Write([]byte(compressedStr))
    reader := flate.NewReader(&buffer)
    var result bytes.Buffer
    result.ReadFrom(reader)
    reader.Close()
    fmt.Println("解压缩:", result.String())
}

压缩字符串:

使用compress/zlib包实现字符串的压缩,示例代码如下:

package main

import (
    "bytes"
    "compress/zlib"
    "fmt"
)

func main() {
    str := "pidancode.com"
    fmt.Println("原字符串:", str)
    var buffer bytes.Buffer
    writer, _ := zlib.NewWriterLevel(&buffer, zlib.BestCompression)
    writer.Write([]byte(str))
    writer.Close()
    fmt.Println("压缩后:", buffer.String())
}

解压缩字符串:

使用compress/zlib包实现字符串的解压缩,示例代码如下:

package main

import (
    "bytes"
    "compress/zlib"
    "fmt"
    "io/ioutil"
)

func main() {
    compressedStr := "\x78\x9c\x4b\xcd\xc9\xc9\x07\x00\x06\xd6\x01\xe2"
    fmt.Println("压缩后:", compressedStr)
    var buffer bytes.Buffer
    buffer.Write([]byte(compressedStr))
    reader, _ := zlib.NewReader(&buffer)
    result, _ := ioutil.ReadAll(reader)
    reader.Close()
    fmt.Println("解压缩:", string(result))
}

以上代码可以在Go Playground上运行:https://play.golang.org/p/TDTQ2JQIEqH