Go语言技术文章
-
Go gzip.Writer 的 Name、ModTime、Comment 等字段会写入 gzip 文件头,但必须在第一次 Write、Flush 或 Close 之前设置。本文给出最小写法,并说明复用 Writer、读回元数据和字段边界。262 收藏 -
连续压缩多段独立数据时,可以保留一个 flate.Writer,用 Reset 切换输出目标并复用内部状态;Flush 只用于流未结束时刷出当前数据,Close 才完成最终收尾。297 收藏 -
Go 的 compress/zlib 可以用预置字典压缩具有固定重复片段的短消息。本文从适用条件出发,给出 NewWriterLevelDict 与 NewReaderDict 的配对写法,并说明 ErrDictionary、Close 和字典生命周期的处理边界。480 收藏 -
Go archive/tar 可以读取稀疏归档并暴露 SparseHoles,但标准 Writer 当前不能直接把 sparse map 编码成 GNU/PAX 稀疏条目。本文说明正确的 Header 表达、普通 tar 写法和兼容方案。193 收藏 -
跨语言二进制结构体经常因为 C 或 Python 的对齐填充导致 Go binary.Read 读错字段。本文用显式空白字段、固定字节序和完整错误处理,给出可移植的读取方式。397 收藏 -
Go database/sql 可以通过 driver.Connector 把驱动连接配置交给 sql.OpenDB。本文说明 Connector、*sql.DB 和连接池的职责边界,并给出统一配置、多个独立连接池及关闭处理的写法。183 收藏 -
Go sort.Find 可以同时返回有序切片中的命中下标和未命中时的插入位置。本文说明 cmp(i) 的方向、found 的判断、重复值边界与安全插入写法。272 收藏 -
Go text/template 默认会继续执行缺失的 map 字段。本文说明如何用 Option("missingkey=error") 让 Execute 立即返回错误,并比较 default、zero 与 error 的适用边界。468 收藏 -
Go html/template 用 define 注册布局、template 调用组件、block 提供默认区域。本文给出独立页面装配示例,说明克隆集合、数据传递、同名覆盖与空页面的排查方法。116 收藏 -
Go embed 会把目录连同前缀嵌入 embed.FS。本文用 fs.Sub 切出指定子目录,说明如何交给 fs.FS 消费者,以及遇到路径错误时怎样按根目录、斜杠和错误处理逐层排查。488 收藏 -
Go TLS 通过 tls.Config.NextProtos 声明 ALPN 应用层协议候选,再用 ConnectionState.NegotiatedProtocol 读取实际协商结果。本文说明客户端、服务端配置,以及匹配、空结果和不兼容边界。230 收藏 -
Go HMAC 验签应先统一签名编码,再比较原始 MAC 字节。本文说明 hmac.Equal 与 subtle.ConstantTimeCompare 的区别、长度处理和安全的请求校验流程。464 收藏 -
Go crypto/rand.Int 返回 [0,max) 内的均匀随机整数。本文说明 rand.Reader、big.Int、闭区间 span、非法范围检查和大整数转换的边界。468 收藏 -
Go log/slog 用 Group 组织单条日志字段,用 WithGroup 和 With 复用公共字段,再用 GroupAttrs 接入动态 Attr 切片。本文按 request、user 和 order 场景说明字段层级与基准指标的检查方法。189 收藏 -
自定义 slog.Handler 只在同步读取当前记录时可以直接使用 Record;一旦要把记录交给多个下游或异步保存,就应先调用 Record.Clone。本文说明共享状态边界、属性遍历方式和并发交接清单。381 收藏