Go语言技术文章
-
解释 Go defer 调用方法时接收者和参数的求值时机,比较值接收者、指针接收者与闭包写法,帮助排查为什么延迟日志读到旧值。359 收藏 -
Golang · Go问答 | 3天前 | database/sql · Go database/sql Rows Go Rows Scan字段顺序 Go SQL查询列顺序 Go rows.Columns排查 Go rows.Err错误处理
Go database/sql 使用 Rows 时,Scan 的目标参数必须按 SELECT 返回列的顺序排列。本文从列数、列名、类型和 NULL 四个方向排查错位,并补上 Rows 的 Close 与 Err 收尾检查。359 收藏 -
Go 没有 panicreturn 关键字,常见写法是用 defer 和 recover 捕获包内 panic,再改写命名返回值中的 error。本文用原创代码说明恢复边界、显式 return 和常见排查点。358 收藏 -
Go archive/zip 中 FileHeader.Method 不是任意压缩等级。本文解释 Store、Deflate、ErrAlgorithm、CreateHeader 与 CreateRaw 的边界,并给出写入错误、Close 收尾和读回校验的排查方法。358 收藏 -
围绕 Go io/fs 讲清文件不存在、权限错误、非法路径和目录遍历失败的判断顺序,给出 errors.Is、errors.As、ReadFile 与 WalkDir 的可复用处理方式。358 收藏 -
Go net/url 拼接路径时如何避免双斜杠?本文说明 URL.JoinPath、PathEscape、ResolveReference 的边界,并给出 Go 1.19+ 与旧版本的安全处理方案。358 收藏 -
Go fuzz corpus 报格式错误时,先定位 testdata/fuzz 中的具体文件,再核对 go test fuzz v1、参数数量、类型与顺序,最后用单条语料完成最小复现。357 收藏 -
Go 普通 map 不能直接承受并发读写,运行时 panic 只是可能出现的表现。本文用一个小缓存说明 map 并发边界,比较 RWMutex 与 sync.Map,并把 go test -race 放进回归验收。354 收藏 -
讲清 Go atomic.Uint64 的 Add 与 Load 如何完成并发计数和单值统计快照,并说明多字段状态不能靠连续 Load 自动保持一致。353 收藏 -
围绕Go net/url处理带未编码分号的查询串,说明ParseQuery如何保留有效参数和错误信息,为什么URL.Query会静默丢错,以及旧协议兼容分号时的安全拆分边界。353 收藏 -
Go map 的 range 顺序不保证稳定。本文用排序后的键值表示和顺序无关断言,说明如何写出可重复、能覆盖边界的 map 测试。352 收藏 -
http.Client.Timeout 限制的是一次请求从连接到读取响应体的总时长,不会替调用方管理 Response.Body。本文区分 Close、读到 EOF、连接复用和慢流场景,给出可直接套用的清理写法。352 收藏 -
Golang · Go问答 | 5天前 | 错误处理 · net/http · HTTP客户端 · Go问答 · Go clienttimeout http.Client Timeout Go 请求超时 Go url.Error 超时 Go HTTP 客户端时限
Go 的 clienttimeout 通常对应 http.Client.Timeout。本文说明它覆盖的请求范围、如何从 client.Do 返回值中判断超时,以及它与 context 和 Transport 分段时限的区别。351 收藏 -
Go 的 initialization cycle 不是运行时偶发错误,而是包级变量的依赖无法排出合法初始化顺序。本文用直接引用、函数体传递引用和三种拆环方案说明如何定位与修复。350 收藏 -
Go select 同时命中多个 case 时不会按源码顺序固定执行,而是在可通信的 case 中做均匀伪随机选择。本文用最小示例解释规则,并给出优先级、取消和测试的确定性处理方式。349 收藏