首页 > 解决方案 > 如何在golang中压缩字符串并返回字节数组

问题描述

我的java代码如下:

    public static byte[] gzip(String str) throws Exception{
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    GZIPOutputStream gos = new GZIPOutputStream(baos);
    gos.write(str.getBytes("UTF-8"));
    gos.close();
    return baos.toByteArray();
}

如何在我的 java 完成时 gzip 字符串并在 golang 中返回字节数组?

标签: arraysstringgogzip

解决方案


gzipString这是使用标准库compress/gzip的函数的完整示例

package main

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

func gzipString(src string) ([]byte, error) {
    var buf bytes.Buffer
    zw := gzip.NewWriter(&buf)

    _, err := zw.Write([]byte(src))
    if err != nil {
        return nil, err
    }

    if err := zw.Close(); err != nil {
        return nil, err
    }

    return buf.Bytes(), nil
}

func main() {
    gzippedBytes, err := gzipString("")
    if err != nil {
        panic(err)
    }
    fmt.Printf("Zipped out: %v", gzippedBytes)
}

推荐阅读