Go问答技术文章
-
通过给表驱动用例增加语义化 Name 字段,让 Go testing.T.Run 的输出、-run 筛选和失败定位保持稳定。176 收藏 -
runtime.KeepAlive 只保证对象在指定位置前仍然可达,不负责关闭文件描述符、连接或其他外部资源。本文从终结器提前运行的风险出发,说明 KeepAlive 的正确位置、显式 Close 的责任和资源持续占用的排查方法。176 收藏 -
io.Pipe 是没有内部缓冲的同步内存管道,写端必须等读端消费数据。本文说明怎样安排并发读写、处理 EOF 与 ErrClosedPipe,并用 CloseWithError 把首个业务错误传到另一端。176 收藏 -
Go ast.ImportSpec.End 不自动包含关联的行尾注释。本文用完整解析示例区分导入项与附注释片段,解释 ParseComments、EndPos、字节偏移及源码工具中的范围选择。176 收藏 -
围绕 Go http.Transport 的 HTTP 代理 CONNECT 握手,说明固定请求头与按目标动态请求头的配置边界,并整理旧代码迁移和回归检查清单。175 收藏 -
Go flag 包中,解析后的变量值不能单独证明参数是否由用户传入。本文用 Visit 和 NFlag 判断实际设置项,再处理显式空字符串、布尔参数、默认值与配置合并的边界。175 收藏 -
Go x/net/html.Tokenizer 的 Token 会把实体、标签名和属性转成结构化数据,因此不能当作原始 HTML 的无损副本。本文用 Raw、Token 和低级 API 对比保留边界,给出按 token 复制原始字节的写法。175 收藏 -
errors.Join合并错误后,应通过errors.Is匹配目标哨兵。本文用完整清单检查示例演示保留%w包装、合并独立问题和同时提示多个类别,并解释同文案错误、nil、Unwrap与As的边界。175 收藏 -
plugin.Open 返回不兼容错误时,先检查应用和插件是否使用相同的 Go 工具链、构建标签、环境变量与共享依赖源码,再决定是否重新统一构建或改用 IPC。175 收藏 -
testing.T.Setenv 不会返回 error,设置失败会直接让测试失败;并行测试还会触发额外限制。本文区分 t.Setenv、os.Setenv、Fatal 输出和并发冲突,给出稳定的 Go 测试写法。175 收藏 -
go/version.IsValid 判断的是带 go 前缀的 Go 工具链版本语法。本文用一个最小项目拆解前缀、数字段、预发布标记和自定义后缀,定位 1.23、前导零及补丁后预发布写法被拒绝的原因。175 收藏 -
go/types.Tuple 描述有序变量列表,不是业务多返回值的运行时容器。通过签名读取示例,区分 Var 元信息、分别接收返回值和用结构体整体保存数据。175 收藏 -
Go常量位移调用前应保留原始计数的符号与精确信息,再检查参数范围和工具预算。本文给出有界适配函数,并区分语言语义、宿主uint与目标平台。175 收藏 -
围绕 sync/atomic.Value.Store 的类型契约,解释首次写入、类型不一致、Store(nil) 和固定结构体修复方式。175 收藏 -
Go 的 panic 和 recover 只作用于当前 goroutine 的调用栈。本文解释外层 recover 为什么接不到子 goroutine 的 panic,并给出在 goroutine 内部恢复、传递错误和选择 error 的实用写法。174 收藏