Go语言技术文章
-
用 strings.Builder 把循环中的多段字符串集中写入,配合字节容量估算、Reset 和明确的并发边界,减少大文本组装时的临时分配。271 收藏 -
Go trimpath 改写构建机绝对路径后,仍可保留文件名与行号。通过错误日志示例,对比两种构建,并用发布标识、源码快照和逻辑路径维持可用定位。270 收藏 -
Go HTTP 客户端可以在复用的 http.Transport 上设置 MaxResponseHeaderBytes,限制服务端响应头的最大字节数。本文说明如何用 Clone 保留默认行为、如何处理超限错误,以及为什么响应头和响应体需要分别设置边界。270 收藏 -
用 Go strings.TrimFunc 和 rune 判定函数清理字符串两端的 Unicode 字符,掌握中文、空字符串与内部字符的处理边界。270 收藏 -
Go slices.CompactFunc 接收自定义相等函数,把连续且满足业务规则的重复项压缩为一项。本文从 Go 1.21 的迁移范围出发,说明比较规则、原地修改、尾部清零、nil 切片和非相邻重复的边界。270 收藏 -
Go cipher.StreamReader 可以把已有的 cipher.Stream 与 io.Reader 组合成按需解密的读取器。本文说明密文 Reader、流密码、分块读取、EOF 处理、资源关闭和 AEAD 安全边界。270 收藏 -
Go ECDH 公钥接入时,应区分原始编码、PKIX DER 和 PEM 文本。本文用显式解析与类型分支说明 NIST 公钥对象转换,并解释为什么转换不会改变曲线。270 收藏 -
Go 的 GIF 多帧数据使用 *image.Paletted 保存每个像素的调色板索引。本文从 image.NewPaletted 出发,说明矩形、调色板、索引像素与 gif.GIF.Image 的关系,并给出创建和检查帧图像的实用写法。270 收藏 -
Go exec.Cmd 应从命令环境副本追加受控覆盖,避免显式 Env 丢失继承项。本文说明 nil 与空切片、Dir 和 PWD、空值与删除,并给出完整示例及敏感变量继承的限制。269 收藏 -
用 fs.ValidPath 校验虚拟路径,再通过 path.Join 把调用方名称映射到带前缀的底层 FS,并说明 fs.Sub、错误路径和安全边界的取舍。269 收藏 -
围绕 os.ReadDir、File.ReadDir 和 io/fs.ReadDirFS 讲清目录条目的排序、分页、io.EOF 与 DirEntry 信息读取边界,帮助 Go 程序按场景选择接口。269 收藏 -
Go 泛型可以用 comparable 约束元素、用 map 记录已见值,在不改变输入顺序的情况下完成全局切片去重;元素不可比较时再通过 key 函数提取业务键。269 收藏 -
Go regexp.Regexp.NumSubexp 统计的是正则表达式中的捕获组数量,不包含完整匹配本身。本文用普通组、命名组和非捕获组说明结果下标怎样对应。269 收藏 -
Go Transport 配置看似未生效,需区分旧实例归属、连接复用和配置作用阶段。结合客户端工厂与顺序切换示例,说明不可变配置、响应体排空、闲置连接回收及热更新的失败边界。269 收藏 -
Go 中无缓冲 channel 的发送必须等接收方出现;如果调用方提前 return,发送 goroutine 就可能永久阻塞。本文用最小示例解释泄漏原因,比较缓冲与取消方案,并给出 goroutineleak/pprof 的排查思路。269 收藏