Go语言技术文章
-
测试里用 time.Now 生成的时间字段会让 got 和 want 每次都不一样。本文只围绕 go-cmp 解释如何用 cmpopts.IgnoreFields 忽略指定字段,同时保留其它业务字段的差异,并区分时间容差比较、嵌套字段路径和全局忽略类型的边界。363 收藏 -
Go 解包符号链接越界不能只靠路径字符串检查。本文说明链接拒绝策略、私有输出目录与 os.Root 写入边界,并提供仅接受目录和普通文件的 tar 示例。363 收藏 -
Go embed 可以在编译期把静态文件放进程序,embed.FS 再通过标准 fs.FS 接口按路径读取。本文比较 string、[]byte 与 embed.FS 的适用场景,并给出模板和静态资源读取方式。363 收藏 -
Go 的 Root.Readlink 正式拼写带小写 l,专门读取根目录内符号链接保存的目标文本。本文用最小示例区分读取链接、跟随链接和路径越界错误。363 收藏 -
Go 的 os.Readlink 返回的是符号链接保存的目标字符串。本文用 filepath.IsAbs 判断相对或绝对目标,并说明相对目标为什么要以链接所在目录为基准解释。363 收藏 -
用 Go netip.ParseAddr 解析带接口作用域的 IPv6 地址,读取 Addr.Zone,并掌握 WithZone、As16 与 Prefix.Contains 的边界。363 收藏 -
Go 处理大文件时,Scanner 和 Reader 都能流式读取,但选择依据不是文件总大小,而是单条记录长度、分隔符语义和错误控制需求。本文给出 Scanner.Buffer、Reader.ReadString 及 EOF 处理的落地判断。363 收藏 -
Squirrel 的 SelectBuilder 采用不可变 builder 语义,Where、OrderBy 等方法返回新值。本文说明为什么必须接收链式返回值,并给出基础查询、状态条件和排序分页的复用写法。363 收藏 -
Go os/exec 的 Cmd.ProcessState 只能在子进程成功启动并完成 Run 或 Wait 后读取。本文比较 Run 与 Start 加 Wait,说明怎样区分启动错误、非零退出和成功退出,并用 ExitCode、Success、Exited 处理状态边界。363 收藏 -
strings.CutSuffix 返回去掉后缀后的字符串和 found 标志。后缀未命中时返回原字符串与 false;空后缀是一个特殊的命中场景,返回原字符串与 true。本文用最小写法和业务封装说明如何把两种情况分开处理。363 收藏 -
Go crypto/sha256.New224 返回 SHA-224 的 hash.Hash,摘要长度由 Size224 固定为 28 字节。本文结合分段写入、Sum 追加语义和一次性 Sum224,说明如何正确输出摘要并避免把切片前缀或哈希状态理解错。363 收藏 -
用最小 Go 程序复现 os.OpenFile 的权限差异,解释 O_CREATE、perm、umask 与已有文件权限之间的关系,并给出需要显式 Chmod 时的处理方式。363 收藏 -
Go 表驱动测试适合把多组输入、期望输出和用例名称集中管理,再用 t.Run 建立可筛选的子测试。本文围绕输入隔离、错误断言、循环变量和失败定位给出可直接改写的组织方式。362 收藏 -
Go 的 strings.FieldsFunc 适合按自定义 rune 规则切分文本。本文用字段导入场景说明它如何处理连续分隔符、首尾分隔符、Unicode 字符与空字段,并给出与 Split、FieldsFuncSeq 的选择边界。362 收藏 -
Go 1.27 的 HTTP/2 服务端开始参考客户端优先级信号,可能让并发请求的服务顺序发生变化。本文说明 DisableClientPriority 的作用范围、配置方式,以及为什么它不能替代业务层严格排序。362 收藏