Golang使用zlib压缩和解压缩字符串

发布时间 - 2026-01-10 23:17:14    点击率:

在python的时候就习惯使用zlib进行网页压缩。 golang下同样使用zlib进行压缩解压缩。  zlib官方给出的方法很简单,这里权当一个补充.

zlib.NewWriter() 只能传递 []byte类型数据.   NewWriterLevel 可以传递压缩的等级.

package main
 
import (
 "bytes"
 "compress/zlib"
 "fmt"
 "io"
)
 
func main() {
 var in bytes.Buffer
 b := []byte(`xiorui.cc`)
 w := zlib.NewWriter(&in)
 w.Write(b)
 w.Close()
 
 var out bytes.Buffer
 r, _ := zlib.NewReader(&in)
 io.Copy(&out, r)
 fmt.Println(out.String())
 
}

库包地址

import "compress/zlib"

写入

func NewWriter
 
  func NewWriter(w io.Writer) *Writer

读取压缩的数据

func NewReader
 
  func NewReader(r io.Reader) (io.ReadCloser, error)

设置压缩等级,并压缩数据

func NewWriterLevel(w io.Writer, level int) (io.WriteCloser, os.Error)

下面是几个级别.

const (
    NoCompression = 0
    BestSpeed   = 1
 
    BestCompression  = 9
    DefaultCompression = -1
)
 
const (
  NoCompression   = flate.NoCompression
  BestSpeed     = flate.BestSpeed
  BestCompression  = flate.BestCompression
  DefaultCompression = flate.DefaultCompression
)

写入数据

func (*Writer) Write
 
  func (z *Writer) Write(p []byte) (n int, err error)

关闭

func (*Writer) Close
 
  func (z *Writer) Close() error

Golang zlib压缩的效率和性能都还可以, 毕竟rsync也在用这个压缩算法。  其实zlib和gzip对比,貌似用gzip的多一点。 比如nginx的gzip压缩. 以前看过国外一个帖子,是说zlib比gzip更适合那种速度跟压缩效果均衡的场景。


# golang  # 解压缩zlib  # zlib  # zlib压缩  # Golang利用compress/flate包来压缩和解压数据  # golang压缩与解压缩文件的示例代码  # Golang使用archive/zip包实现ZIP压缩与解压  # Go实现自动解压缩包以及读取docx/doc文件内容详解  # go 压缩解压zip文件源码示例  # golang中tar压缩和解压文件详情  # MongoDB windows解压缩版安装教程详解  # Go语言压缩和解压缩tar.gz文件的方法  # Go语言中数据压缩与解压的实现  # 几个  # 也在  # 很简单  # 是说  # 都还  # 解压缩  # 更适合  # 国外  # fmt  # io  # compress  # import  # bytes  # func  # xiorui  # amp  # cc  # var  # Buffer  # Write 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  Laravel如何使用Telescope进行调试?(安装和使用教程)  Laravel如何为API生成Swagger或OpenAPI文档  如何快速使用云服务器搭建个人网站?  Laravel怎么调用外部API_Laravel Http Client客户端使用  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  JavaScript如何操作视频_媒体API怎么控制播放  SQL查询语句优化的实用方法总结  如何在宝塔面板中创建新站点?  如何利用DOS批处理实现定时关机操作详解  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  Laravel怎么实现验证码(Captcha)功能  韩国服务器如何优化跨境访问实现高效连接?  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  如何在Windows环境下新建FTP站点并设置权限?  Laravel如何优化应用性能?(缓存和优化命令)  javascript日期怎么处理_如何格式化输出  如何用西部建站助手快速创建专业网站?  微信小程序 HTTPS报错整理常见问题及解决方案  怎么用AI帮你设计一套个性化的手机App图标?  常州企业网站制作公司,全国继续教育网怎么登录?  Android利用动画实现背景逐渐变暗  微信小程序 闭包写法详细介绍  如何在万网开始建站?分步指南解析  Laravel如何与Inertia.js和Vue/React构建现代单页应用  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  香港服务器选型指南:免备案配置与高效建站方案解析  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  PythonWeb开发入门教程_Flask快速构建Web应用  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  如何挑选高效建站主机与优质域名?  Python并发异常传播_错误处理解析【教程】  如何获取上海专业网站定制建站电话?  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  使用豆包 AI 辅助进行简单网页 HTML 结构设计  EditPlus中的正则表达式 实战(1)  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  Java类加载基本过程详细介绍  高端建站三要素:定制模板、企业官网与响应式设计优化  想要更高端的建设网站,这些原则一定要坚持!  Laravel如何集成Inertia.js与Vue/React?(安装配置)  javascript读取文本节点方法小结  青岛网站建设如何选择本地服务器?  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)