Go问答技术文章
-
Go testing.T.Setenv 测试单独通过、整包失败时,如何区分并行限制、配置缓存与后台任务污染,并用串行环境适配和显式输入稳定测试。174 收藏 -
Go 的 Rows.ColumnTypes 返回结果集列元数据,ColumnType.DatabaseTypeName 读取驱动提供的 SQL 类型名。本文说明它与列名、ScanType、Length 的区别,以及驱动不支持时空字符串的排查方法。174 收藏 -
Go Ticker Reset 后仍收到旧节拍,通常不是 Reset 没生效,而是 Go 版本、计时器通道语义和消费协程时序叠在了一起。本文给出判断边界与兼容写法。173 收藏 -
Go trace 文件过大通常与记录窗口太长、运行时事件密度高或用户标记过多有关。本文说明如何用短窗口、任务边界和 FlightRecorder 保留可分析的诊断片段,并区分 trace、pprof 与业务日志的分工。173 收藏 -
tls.ConnectionState.VerifiedChains 为空不一定代表 TLS 握手失败,它取决于客户端 InsecureSkipVerify、服务端 ClientAuth 和是否使用默认证书校验。本文说明如何区分 PeerCertificates、VerifiedChains 与 VerifyConnection,避免误判证书状态。173 收藏 -
Go Gonum 的 interp 插值器要求横坐标严格递增,因为相邻点要形成正宽度区间,斜率、三次系数和二分查找都依赖这个契约。本文说明重复、倒序和非法浮点值的风险,并给出保持 xs 与 ys 配对的校验和排序方式。173 收藏 -
go/types.Identical 做严格结构体类型比较时会检查字段标签;只有明确调用 IdenticalIgnoreTags,或处于语言转换语境,标签才会被忽略。本文用最小程序拆解比较条件和 API 选择。173 收藏 -
Go 的 ast.CommentMap.Filter 会新建一个映射容器,但不会深复制 AST 节点、注释组或注释列表。本文拆开说明这些引用的复用边界,并解释 AST 替换时何时使用 Update、何时需要显式复制。173 收藏 -
Go 服务启动时报端口被占用时,从 net.Listen 的绑定地址入手,结合 macOS、Linux、Windows 命令定位 PID 和监听范围,区分旧实例、IPv4/IPv6 与通配地址冲突,并给出安全停止、改端口和复查方法。172 收藏 -
Go pprof heap profile 中样本条目偏少,并不等于程序只分配了这么少的对象。本文区分采样条目、加权读数、inuse 与 alloc 指标,并说明 MemProfileRate 应该怎样影响解读。172 收藏 -
Go GC 变频繁并不一定意味着存活堆持续增长,常见原因是分配速率上升、GOGC 目标变小或内存上限触发更积极的回收。本文用 runtime/metrics 和 pprof alloc_space 区分现象,再给出修正顺序。172 收藏 -
Golang · Go问答 | 2星期前 | 标准库 · 模块 · go · 运行时 · Go模块依赖 BuildInfo runtime/debug.ReadBuildInfo Go构建信息 VCS信息
Go 程序在运行时可以用 runtime/debug.ReadBuildInfo 读取当前二进制携带的模块构建信息。本文拆开 GoVersion、主模块、依赖替换和 Settings 的读取方式,并说明 ok=false 代表什么。172 收藏 -
Go snowflake 的 NodeBits 与 StepBits 共享 22 位预算。本文用节点数量和单节点毫秒级突发量拆解容量分配,并说明自定义位数的初始化顺序、节点编号和时钟注意事项。172 收藏 -
Go HTTP 请求超时后仍占资源,通常不是 context 取消失效,而是请求、响应体、连接复用和业务 goroutine 的清理职责没有分开。本文用可执行示例说明正确的取消与关闭方式。172 收藏 -
go test -shuffle 失败时,先根据是否出现 -test.shuffle seed 区分参数解析、构建或测试运行阶段,再用固定 seed 重现顺序问题。172 收藏