Go语言技术文章
-
Go token.File 的 Position.Column 不是中文字符数量,而是基于 UTF-8 字节偏移计算的行内列号。本文用 Pos、Offset、Position 和中文标识符示例说明如何正确换算,并处理 //line 位置调整。413 收藏 -
Go JSON 解码后如何保留未知字段?比较 struct、动态 map 与 RawMessage,给出固定字段加扩展容器的完整写法,并解释合并冲突、数字精度、null 与嵌套字段的处理边界。412 收藏 -
用 archive/zip 的 FileInfoHeader 和 CreateHeader 保留 ZIP 条目的 Unix 权限、目录类型与可执行位,并说明读取复核、路径安全和跨平台边界。412 收藏 -
Go 使用 gopkg.in/yaml.v3 读取配置时,应先把默认值写入结构体,再解码 YAML;这样文件中出现的字段会覆盖默认值,省略字段仍保留默认策略。本文还说明显式零值、未知键和严格解码的处理边界。412 收藏 -
Go XML Decoder 关闭 Strict 可容忍部分缺失标签与实体错误。通过小样本 Token 对照说明容错边界,区分解析成功、字符映射、HTML 兼容和业务数据正确性。412 收藏 -
用 io.LimitReader、max+1 探测和 http.MaxBytesReader 为 Go ReadAll 设置输入大小上限,区分截断、超限和读取错误。412 收藏 -
filepath.Base 会先去掉末尾路径分隔符,再提取最后一个元素;空路径返回点号,只有分隔符的路径返回单个分隔符。本文用边界表和可复用代码说明这些结果,并区分 filepath 与 path 的使用场景。412 收藏 -
Go io.SectionReader 的 ReadAt 使用 section 内相对偏移,不会推进 Read 使用的当前读取位置。本文说明 base、当前偏移和 limit 的边界,给出定位读取、短读和 EOF 的处理方式。412 收藏 -
Go archive/zip 的 Reader.Open 可以按 fs.FS 的路径语义直接打开 ZIP 成员。本文说明如何使用斜杠路径读取指定文件、关闭返回的 fs.File,并处理成员不存在、前导斜杠、父目录和遍历元数据等边界。412 收藏 -
Go atomic.Value 的第一次 Store 会建立具体动态类型契约,后续 Store、Swap 和 CompareAndSwap 必须保持一致。本文说明零值、Config 快照、并发读取与常见 panic 的排查边界。412 收藏 -
Gock 可以为同一个 HTTP 方法和路径注册多条模拟规则,并按 FIFO 顺序消费不同响应。本文用 Times(1) 组合状态码与 JSON,说明连续请求、规则耗尽、未匹配判断和清理边界。412 收藏 -
fsnotify 的 Add 只登记传入的单一路径,不会把子目录自动加入 watcher。本文说明这个边界,并用启动扫描加新增目录补登记的方式构造可维护的递归监听。412 收藏 -
Go llrb 的 ReplaceOrInsert 依据 Item.Less 的排序等价判断是否替换,不比较结构体整体值或指针地址。本文用业务键示例说明返回值、Less 契约与可变字段边界。412 收藏 -
用 go/types.Struct 描述结构体字段,再通过 SizesFor、Offsetsof、Alignof 和 Sizeof 生成布局报告。本文重点说明编译器架构、padding、数组对齐以及类型分析与运行时地址的区别。412 收藏 -
Go 的 build/constraint.Parse 负责把 //go:build 或 // +build 行解析成表达式;前缀识别成功不代表语法正确。本文用 SyntaxError 的 Offset 和 Err 定位非法构建约束,并说明如何复查 Expr。412 收藏