Go语言技术文章
-
用一个批量读取小项目说明 Go bytes.Buffer.Reset 怎样在复用缓冲区时清掉旧内容,如何区分空输入与真实读取错误,以及 Bytes 返回切片的生命周期边界。307 收藏 -
Go bytes.Cut 返回 before、after 和 found,适合在批处理代码中只切首个分隔符。本文用键值记录说明如何区分缺少分隔符与空字段,解释减少中间结果容器的思路,并给出切片共享与 bytes.Clone 的生命周期边界。307 收藏 -
sync.Map 并不保证在所有并发读写场景都快于 map 加 RWMutex。本文从读写比例、键集合和更新竞争三个维度构造最小 benchmark,解释性能没有达到预期时如何定位并选择实现。307 收藏 -
在批处理拼接长字符串时,先按字节估算固定文本、记录和分隔符的总量,再调用 strings.Builder.Grow 预留容量。本文用一个可复用示例说明 Len、Cap、String、Reset 与 UTF-8 估算边界。306 收藏 -
Go unique.Make 可将重复字符串表示为可比较句柄,并通过 Value 恢复文本。本文给出标签计数最小示例,说明相等关系、回退路径与缓存边界。306 收藏 -
Go 的 exec.Cmd.Env 遇到同名环境变量时,最终采用切片中最后出现的值。本文区分 nil 继承、显式环境、Cmd.Environ 追加覆盖、空值与 Windows 特殊边界,给出可直接套用的构造方式。305 收藏 -
Go path.Match 中的 ** 不是多级目录通配符,连续两个 * 仍然不能跨过斜杠。本文用最小示例拆开单层与多层路径的差异,并说明如何区分 false、ErrBadPattern 以及逐段匹配方案。304 收藏 -
Go encoding/csv 可以用 Reader.Comment 忽略指定格式的注释行,连续分隔符产生的空字段仍会保留为字符串空值。本文给出逐条读取、字段数约束、空白处理和解析错误的生产写法。303 收藏 -
Go encoding/csv.Reader 会自动忽略真正的空行,但只含空格的记录仍可能被读出。本文用一个可调整的空记录判断函数区分空行、空字段和有效记录,并处理 EOF、解析错误与可变字段数。303 收藏 -
说明Go types.Scope.Innermost的位置查询方法,用完整示例连接源码字节偏移、FileSet与Info.Scopes,并区分nil结果、当前层名称与可见对象查找。303 收藏 -
通过显式存在性判断处理Go fmt.Appendf可选字段,保留空串、零值和false,管理分隔符及返回切片,并说明文本格式与JSON编码的区别。303 收藏 -
Go 默认把接口中的 JSON 数字解码为 float64,超过安全精度时可能改变原始值。本文用 Decoder.UseNumber 保留 json.Number 文本,先用 json.Valid 和格式判断选择 Int64 或 Float64,再处理小数、越界和浮点误差。302 收藏 -
用 io.LimitReader 约束读取配额,以 io.CopyBuffer 和独占缓冲减少整段临时存储,说明专用复制接口、超限判定与并发复用的边界。302 收藏 -
Go mod 中的 replace 相对路径依赖主模块目录和完整工作区,CI 中常因替换目录未检出、嵌套模块选错或目标缺少 go.mod 而失效。本文给出定位命令、仓库布局修复方式与切换模块版本的判断标准。301 收藏 -
本文用一个小型 Go 示例说明 weak.Make、weak.Pointer.Value、nil 输入和 runtime.KeepAlive 的关系,帮助你判断弱引用适合缓存还是不适合承担生命周期保证。301 收藏