Go语言技术文章
-
Go toolchain 自动下载失败时,可以根据项目是否允许升级,选择 GOTOOLCHAIN=local 或 go1.x.y+path 固定本地工具链,并检查 go.mod、go.work 与 PATH 中的版本关系。103 收藏 -
使用 Go sync.OnceValue 缓存一次计算值,排查重复创建 getter、初始化阻塞与可变返回值共享问题,并说明 panic、零值和缓存生命周期的注意点。103 收藏 -
Go 的 nil map 可以读取、遍历和删除,但不能写入。本文用缓存索引示例说明 make 初始化、惰性初始化、双值读取和回归检查,避免 assignment to entry in nil map。103 收藏 -
围绕 ResponseWriter 包装导致的 http.Flusher 断言失败,说明安全断言、Unwrap 透传和 ResponseController 兜底的兼容写法。103 收藏 -
Go TLS 出现 unknown authority 时,按服务端证书链、系统根证书池、私有 CA、自定义 RootCAs 和容器证书包逐项排查,避免用 InsecureSkipVerify 绕过校验。103 收藏 -
Go net/http.NewFileTransportFS 可以把 fs.FS 接成 HTTP 客户端的 RoundTripper,常用于通过 file 协议读取本地目录或嵌入文件系统。本文说明 RegisterProtocol、路径映射、io.Seeker、响应体关闭和混合 Transport 的使用边界。103 收藏 -
Go database/sql 查询循环结束并不等于读取完整成功,本文从连接中断、Rows.Close 和事务提交三个现场拆开 Rows.Err 的检查边界,并给出可复现的代码与验收方法。102 收藏 -
Go 1.22 引入的 database/sql.Null[T] 用 V 保存值、用 Valid 表示数据库 NULL。本文用可运行示例解释 Scan(nil)、Scan(0) 与 Value() 的边界,避免把零值误当成空值。102 收藏 -
Go text/template 默认可能忽略缺失 map 键。本文比较 missingkey 的三种策略,示范如何让必填键在 Execute 阶段直接返回错误,并处理可选字段。102 收藏 -
Go 泛型类型推断不会单独替你选择更窄的类型范围:实参或上下文先给出候选类型,约束再检查它是否允许。本文比较 any、方法约束和类型集合约束,并说明推断失败时的显式写法。102 收藏 -
Golang · Go问答 | 3星期前 | HTTP · Cookie · net/http · Go问答 · cookie Go net/http CookiesNamed Request.Cookies
解释 Go Request.Cookies、CookiesNamed 和 Cookie 在同名 Cookie 请求头下的读取顺序与选择语义,给出重复值排查示例、版本边界和登录态处理策略。102 收藏 -
用 Go 1.27 的 goroutineleak profile 按创建栈聚合泄漏样本,结合 pprof top 与 list 定位阻塞源码,并说明 channel、sync 与 IO 场景的判断边界。102 收藏 -
Go 1.27 的 goroutineleak 剖析没有业务标签时,仍可从永久阻塞的操作栈回溯到调用者和 goroutine 创建点。本文给出 pprof 接入、采集、定位与修复方法。102 收藏 -
Golang · Go问答 | 2星期前 | 错误处理 · Context · 并发编程 · go语言 · Go context context.Cause 取消原因 WithCancelCause CancelCauseFunc
context.Cause 返回父级原因,是因为父级取消会向子级传播,而子级或任一父级的首次取消会固定该子级的 cause。本文用两种取消顺序说明 Err、Cause、超时和 WithoutCancel 的边界。102 收藏 -
Go csv.Reader 开启 ReuseRecord 后,Read 返回的记录切片可能复用上一轮的底层数组。本文用一个导入场景说明覆盖原因,并给出立即消费、复制保存和异步传递时的选择方法。102 收藏