Go语言技术文章
-
MaxIdleConnsPerHost 只限制单个 host 的空闲 keep-alive 连接;需要总连接上限时应使用 MaxConnsPerHost,并区分 HTTP/2 流与业务并发。103 收藏 -
用 net.Resolver.LookupHost 配合 context.WithTimeout 给 DNS 查询单独设定预算,并通过 DNSError、Timeout、Temporary 和上下文错误区分重试、取消与域名不存在。103 收藏 -
Go 类型断言返回 ok=true,只能说明接口里的动态类型匹配,不能证明断言得到的指针非 nil。本文用 typed nil 示例拆解接口值、断言结果和方法调用的边界,并给出 nil 与 error 的安全处理写法。103 收藏 -
Go 使用 bufio.Writer 写文件时,Write 成功不等于内容已经落盘。本文拆开 Flush、Sync、Close 的责任边界,并给出可返回错误的关闭流程与最终内容校验方法。103 收藏 -
用 go mod why 按包或模块读取从主模块到目标依赖的最短导入路径,理解 -m、-vendor、未引用提示与 go mod graph 的边界。103 收藏 -
用 Go os.CreateTemp 创建临时文件时,创建、写入、关闭和删除是四个不同责任。本文给出一套保留原始错误、无论成功失败都清理文件的实践写法。103 收藏 -
Go 1.27 的可移植 simd 包在 CPU 不支持 SIMD 时会使用纯 Go 仿真实现;部分能力不足时默认降到可用向量宽度或仿真,但强制宽度可能触发 panic。103 收藏 -
下游接口少量请求只是变慢而没有失败时,可以用 Go 的 net/http 与 context 为幂等读取请求增加受控副本:设置对冲延迟、共享总截止时间,首个成功后取消其余副本,同时限制额外流量。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问答 | 2星期前 | 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 收藏