Go问答技术文章
-
Go database/sql 的 sql.NullTime 扫描 NULL 后应让 Valid=false。本文拆开 NULL、有效时间、扫描错误和对象复用四种状态,给出 QueryRow、Rows.Scan 与 Value 的正确处理方式。313 收藏 -
Go 中把 nil 指针作为 error 返回后,接口会保留具体动态类型,因此 err 可能不等于 nil。本文用代码说明 typed nil 的形成原因、成功分支的正确返回方式,以及类型断言排查时的边界。313 收藏 -
Go crypto/cipher.AEAD 的 Seal 支持用 plaintext[:0] 复用明文存储,但是否真的减少分配取决于剩余容量和切片别名边界。本文说明如何按 Overhead 预留容量,并避开 additionalData 与输入输出的非法重叠。313 收藏 -
Go database/sql 事务提交后 Rows 仍未关闭,通常与提前退出、未检查 Rows.Err 或把 Commit 当成 Close 有关。本文给出提交前显式关闭结果集、错误回滚和连接池排查方法。312 收藏 -
Go 的 net/http 并没有公开的 Cookie.DomainMatches 方法。本文对比 CookieJar 的真实发送行为与自定义域名判断函数,说明精确匹配、点号边界、HostOnly 和 IP 地址的处理方式。312 收藏 -
Go transform 的 ErrShortDst 表示输出空间不足。本文区分容量信号与输入校验,说明返回计数、连续状态及零进展处理,并给出完整转换函数。312 收藏 -
Go encoding/json 处理嵌入结构体时,如果同一层级出现同名字段,JSON 标签会参与候选筛选;唯一候选会被使用,多个同优先级候选则可能全部忽略且不报错。本文用最小示例拆开字段层级、标签优先级和排查方法。312 收藏 -
GOMAXPROCS限制Go代码执行并行度,并非固定线程总数。本文区分G、M、P,提供只读采样与对照调整示例,并说明恢复数值和恢复默认策略的差别。312 收藏 -
Go map 的遍历顺序没有语言保证。本文用键收集、sort.Strings 和多字段比较器,把 map 数据转换成可复现的日志、接口和报表结果。311 收藏 -
从 GOTOOLCHAIN、go.mod/go.work 的 go 与 toolchain 行出发,解释 Go 工具链为何自动切换,以及 auto、path、local 和固定版本在开发、CI、离线环境中的差异。311 收藏 -
Cobra 的 SilenceUsage 只控制错误时是否显示 usage,SilenceErrors 只控制是否自动打印错误;本文用 RunE 和 main 的统一错误出口说明组合取舍。311 收藏 -
用一个出站 HTTP 调用拆开 Client.Timeout、Request Context 与 ResponseHeaderTimeout 的覆盖边界,帮助排查连接慢、响应头慢和响应体慢。311 收藏 -
Go 处理 IPv6 地址和端口时,冒号会让普通 host:port 拼接失去边界。本文从裸 IPv6、重复方括号、net.JoinHostPort、net.SplitHostPort 和 zone 标识几个角度,给出定位解析失败与统一拼接的实用方法。310 收藏 -
Go MultiWriter 在同次 Write 遇错时会停止后续目标。本文用双输出改造示例区分前置副作用、外层重复调用和缓冲延迟错误,并说明 Flush 与重试边界。310 收藏 -
Go 1.22 改变了 for 循环变量的作用域。本文从 go.mod、闭包捕获和 GOEXPERIMENT=loopvar 三个线索判断代码使用的是新语义还是旧语义,并说明何时仍需显式传参。310 收藏