Go问答
已收录文章:28篇
-
Go 的 sync 包双返回值 Once 辅助函数不只是把初始化代码执行一次,还会把第一次返回的值和错误一起缓存。本文用并发初始化配置的场景说明它与普通 Once 的边界。499 收藏
-
Go 程序明明调用了 Write,退出后日志文件却少了最后几行,常见原因不是字符串没生成,而是 bufio.Writer 仍留在用户态缓冲区,或 Flush、Close 的错误没有被检查。本文用一个退出前丢日志的场景,拆开缓冲写入、defer 执行时机、Flush 与 Sync 的边界,并给出可复测的收尾写法。496 收藏
-
Golang · Go问答 | 2个月前 | net/http · Go问答 · 接口安全 · 版本迁移 · ServeMux · net/http 通配符 路由冲突 ServeMux Go 1.22 PathValueGo 1.22 改造了 net/http.ServeMux 的模式语法和优先级,旧项目迁移时最容易踩到方法覆盖、通配符冲突和大括号语义变化。本文用最小代码验证匹配规则、冲突触发条件和上线前的兼容检查。490 收藏
-
Go 服务把 regexp.Compile 放进请求函数后,正则本身没变,延迟却会随并发上升。本文用基准对比请求内编译、包级预编译和受控缓存,解释编译成本、并发读写与动态规则的边界。479 收藏
-
自定义 http.RoundTripper 做重试时,真正容易出错的不是循环次数,而是请求体能否重放、方法是否幂等以及错误如何返回。本文用一个可运行的重试 Transport 拆开这三个边界。457 收藏
-
Go 定时任务最容易被忽略的问题不是如何按时触发,而是上一次还没结束时下一次又开始。本文用 context、超时和退出确认设计一个不会重叠执行的任务循环,并说明失败、取消和告警怎么收口。440 收藏
-
Go 1.26 默认开启 TLS 后量子混合密钥交换。本文用 Go 客户端和服务端最小实验说明协商结果怎么观察、旧客户端如何做灰度验证,以及 tlssecpmlkem 开关和回退边界。420 收藏
-
Golang · Go问答 | 2个月前 | golang · 路由 · net/http · Go问答 · ServeMux · net/http 通配符 路径参数 ServeMux Go问答 Go 1.22 PathValueGo 1.22 为 net/http.ServeMux 增加了方法模式、命名通配符和 Request.PathValue。本文用订单详情路由拆解单段参数、末尾多段参数、方法匹配、URL 解码和旧版 Go 兼容边界。404 收藏
-
Go 的 url.Values 既能表达同名重复参数,也能表达单值参数,但 Add、Set 和 Encode 的组合会直接影响服务端拿到的结果。本文用标签筛选接口说明参数如何构造、编码、解析和验收。386 收藏
-
Golang · Go问答 | 2个月前 | golang · 连接池 · database/sql · Go问答 · 连接池 事务 DBStats rows.Close Go database/sqlGo database/sql 里漏掉 Rows.Close,问题往往不是某一次查询报错,而是连接长期被结果集占着,最终让连接池等待堆积。本文从 DBStats 指标和事务生命周期入手,复现现象,解释 Rows、Tx 与连接归还的关系,并给出可复查的代码边界。374 收藏
-
slices.Clone 能复制 Go 切片,但它解决的是底层数组共享,不等于深拷贝或并发安全。本文用容量边界、append 行为和嵌套引用三个检查点说明该怎么选。371 收藏
-
Go 的 map 不能用 == 比较内容,只有和 nil 比较才合法。本文从可比较类型规则出发,拆解 len、reflect.DeepEqual 与排序后序列化三种校验方式的边界,并给出测试和生产代码中的选择建议。369 收藏