Go问答技术文章
-
Go 的 exec.Cmd.Env 遇到同名环境变量时,最终采用切片中最后出现的值。本文区分 nil 继承、显式环境、Cmd.Environ 追加覆盖、空值与 Windows 特殊边界,给出可直接套用的构造方式。305 收藏 -
slices.Clip 会把切片容量收紧到长度,让后续 append 无法复用原切片的容量尾部;本文解释它与三下标切片、slices.Clone 的区别,以及共享元素和并发边界。294 收藏 -
Go regexp.Compile 遇到重复命名分组时,先确认同名捕获组本身可以被接受,再用 syntax.Error 的 Code 和 Expr 定位真正的语法错误,并结合 SubexpNames 与 SubexpIndex 读取同名组索引。294 收藏 -
go test -shuffle 暴露出结果不稳定时,先保存随机种子,再区分共享状态、并行调度和测试缓存。本文用固定种子复现问题,并给出修复后的回归命令。286 收藏 -
Go go/version.Compare 按 Go 工具链规则比较版本,本文用 beta、rc、语言版本和补丁版本说明排序关系,并给出输入校验与最低版本判断写法。278 收藏 -
Go ast.Preorder 返回可直接用 range 消费的 AST 节点迭代器。本文从 parser.ParseFile 开始,说明深度优先前序顺序、节点类型筛选、找到目标后 break,以及需要跳过子树时的 API 边界。278 收藏 -
Go os.Lstat 报错时,用 errors.Is 区分不存在、权限不足等原因,用 errors.As 提取 PathError 上下文。结合原创清单工具说明错误链包装、符号链接语义与未知错误的保留方式。275 收藏 -
Golang · Go问答 | 2天前 | 标准库 · 错误处理 · Go问答 · Go Base strconv.ParseInt bitSize ParseInt结果 NumError ErrRange ErrSyntax
strconv.ParseInt 本身是确定性的,结果看似不稳定通常来自 base、bitSize、输入前缀或忽略错误。本文用架构边界随笔的方式拆解参数契约、NumError、ErrSyntax 与 ErrRange,帮助把跨环境解析规则固定下来。273 收藏 -
go mod tidy 升级后出现依赖增删、go.sum 变化或程序行为不同,不要直接回滚。本文按基线、diff、模块图、工具链和分层复现五步定位变化来源,并给出可提交的判断标准。267 收藏 -
Go HTTP2Config.StrictMaxConcurrentRequests决定HTTP/2流额度满时等待还是增加连接。文章对比两种策略,给出客户端配置示例,并区分流额度、连接预算与业务并发限制。267 收藏 -
Go 的 os.File.Truncate 只改变文件长度,不会自动调整当前 I/O 偏移。本文用代码拆开 Truncate、Seek、Write 和 WriteAt 的职责,解决截断后 EOF、追加和固定位置覆盖的常见误判。267 收藏 -
Go 升级后 bufio.Scanner 的分行结果、token 数量或错误表现发生变化时,先固定工具链和输入,再核对 SplitFunc、Buffer、Bytes 生命周期与 Err 结果,避免把输入边界误判为版本回归。262 收藏 -
Go testing.T.Attr 的键不能包含 Unicode 空白,值不能包含回车或换行;违规时会让测试失败并跳过该属性。本文解释约束来源、错误模型,以及如何把自由文本稳定映射为可记录的单行属性。255 收藏 -
Go crypto/mlkem 的密钥对象不能用任意内存序列化代替官方编码。本文说明封装公钥与解封装私钥的 Bytes、New... 构造函数、ML-KEM-768/1024 的长度约束,以及字节往返时的错误处理和保密边界。255 收藏 -
Go container/heap 中已有元素修改优先级后,应先更新对象字段,再用对象当前 index 调用 heap.Fix;本文解释 Swap 的索引维护、Fix 与 Remove/Push/Init 的边界,以及如何固定这些一致性风险。254 收藏