Go问答技术文章
-
Go 的 rows.Next 返回 false 不一定代表结果集正常读完,也可能是迭代期间发生了错误。本文用最小可用代码拆开 QueryContext、Scan、Err 和 Close 的判断边界,说明如何避免把超时、驱动错误误判为空结果。433 收藏 -
Go 项目已经生成 vendor,编译却仍访问模块代理,通常不是 vendor 目录失效,而是 -mod 参数、GOFLAGS、go.mod 版本门槛或 vendor/modules.txt 不一致。本文按检查顺序给出定位和修复方法。433 收藏 -
Go 的 UnmarshalJSON 适合处理 JSON 表示与 Go 类型之间的边界,不应承载数据库、权限或完整业务校验。本文用别名类型、临时结构和错误分层说明如何限定自定义解码责任。433 收藏 -
解释 Go fs.Sub 为什么拒绝包含 .. 的路径,拆解 ValidPath 规则,并比较 embed.FS、os.DirFS、os.Root 的适用边界与排错方法。433 收藏 -
Go 1.27 引入 encoding/json/v2 后,字段匹配、nil 容器、重复键和非法 UTF-8 的默认语义都更严格。本文用最小示例梳理 v1/v2 差异、兼容选项与切换回归清单。433 收藏 -
Golang · Go问答 | 4星期前 | go · RSA · 密码学 · Go rsa.PSSOptions SaltLength PSSSaltLengthEqualsHash SignPSS
Go 的 PSSOptions.SaltLength 可选自动最大盐长、等于哈希长度或指定正整数。本文给出推荐场景、跨语言互操作、验证端严格度、FIPS 边界和测试矩阵。433 收藏 -
说明 Go exec.Cmd.WaitDelay 的计时边界、管道继承与 StdoutPipe 调用顺序,给出超时和 ErrWaitDelay 的区分处理方案。433 收藏 -
用 netip.Prefix.Contains 判断 IPv4、IPv6 网段归属,重点核对地址族、Masked 规范化和边界测试,避免把字符串比较或映射地址混进访问控制。432 收藏 -
Go 测试使用 t.Parallel 后,如果多个子测试复用父测试创建的临时目录、固定文件名或可变对象,就可能互相覆盖。本文解释调度边界,给出 t.TempDir 隔离夹具、识别共享资源和复查修复的实用方法。432 收藏 -
Go 空接口断言失败通常不是值看起来不对,而是动态类型与目标类型不完全一致。本文用 %T、comma-ok、类型 switch 区分值类型、指针类型和 typed nil。432 收藏 -
Go CGO 交叉编译出现 exec gcc not found 时,先确认目标平台、CGO_ENABLED 和 CC,再在目标 C 交叉编译器与关闭 CGO 之间选择,最后用二进制架构检查避免误用主机 gcc。432 收藏 -
从 Go string 与 C char 指针的表示差异出发,说明 C.CString、C.GoString、C.GoStringN 的选择、C.free 的释放责任,以及异步保存指针时的生命周期边界。432 收藏 -
Go tar 解包时不要直接把 Header.Name 拼到目标目录。本文用 filepath.IsLocal 拒绝绝对路径和父目录,说明 ErrInsecurePath、filepath.Join、目录项以及 Linkname 的边界,并给出可复用的安全解包骨架。432 收藏 -
Go 配置中的 500ms、2s 和 1m30s 不能按普通整数读取。本文用 time.ParseDuration 拆开格式边界、错误处理、负数与溢出问题,并给出启动阶段集中校验的写法。432 收藏 -
Go base64.Encoding.AppendDecode 会把解码结果追加到目标切片,输入非法时仍可能返回部分数据和错误。本文用前缀切片、CorruptInputError 与增量输入边界说明如何安全处理。432 收藏