Go语言技术文章
-
Go 1.26 重写了 go fix,可以自动应用一批现代化改写。本文从 new(expr) 这个最小例子出发,说明 go.mod 版本门槛、变更预览、测试核对和回滚边界,帮助旧项目安全尝试 go fix。388 收藏 -
Golang · Go教程 | 15小时前 | Go教程 · net/http · Go 1.22 · ServeMux · HTTP路由 · Go net/http 路由参数 ServeMux PathValue
用 Go 1.22 及以上版本的 net/http ServeMux 读取路径通配符,讲清 PathValue、通配符边界、路径转义和旧版本兼容处理。388 收藏 -
Go 的 url.Values 既能表达同名重复参数,也能表达单值参数,但 Add、Set 和 Encode 的组合会直接影响服务端拿到的结果。本文用标签筛选接口说明参数如何构造、编码、解析和验收。386 收藏 -
因为Gin每个请求在独立goroutine中执行,而count++非原子(读-加-写三步),并发时多个goroutine可能读到相同值并写回覆盖,导致计数丢失;应改用atomic.AddInt64(&count, 1)保证原子性。为什么 handler 里改全局变量会出错 问题就出在这里:Gin 处386 收藏 -
后台任务最难排查的不是启动,而是失败后谁负责停下、错误如何回到请求方、剩余 goroutine 怎样确认已经退出。本文用 Go errgroup 组织并发任务,拆解退出信号、错误回收和最小验收方式。385 收藏 -
Go 在 range 遍历 map 时允许删除尚未访问的键,但遍历顺序本来就不稳定,新增元素也不能依赖是否会被访问。本文用小实验区分语言保证、实现现象和可测试的安全写法。384 收藏 -
Go 中用 buffered channel 或 golang.org/x/sync/semaphore 限制并发都能工作,但取消传播、加权资源和任务排队方式不同。本文从一个批量抓取场景出发,对比两种实现的边界,并给出选择与验收清单。384 收藏 -
Go 回调接口是否都应该返回 error?从同步确认、异步投递和后台任务三个场景拆解接口设计,给出可落地的签名、错误归属和判断清单。382 收藏 -
Go 用 encoding/json 将 JSON 解码到 interface{} 或 map[string]any 时,数字默认会落成 float64。本文用订单金额和分页字段的例子说明这种行为的原因,演示 Decoder.UseNumber、json.Number 与结构体解码的选择,并给出精度验证与边界检查方法。380 收藏 -
Go 的 sync 一次性初始化器适合把稳定结果封装成函数,但初始化失败也会被缓存。本文用配置加载和重试边界说明一次性函数、OnceFunc 与可重试初始化该怎么选。379 收藏 -
Go embed.FS 不只适合把模板打进二进制,也可以通过版本目录和启动校验降低模板发布风险。本文演示如何保留可回滚版本、验证文件完整性,并明确热切换不该越过的边界。379 收藏 -
Go 程序在 main 函数返回后立即终止,若未显式等待后台 goroutine 完成,可能导致通道数据未被消费、文件写入中断等“静默失败”。本文详解其根本原因及可靠解决方案。 Go 程序在 main 函数返回后立即终止,若未显式等待后台 goroutine 完成,可能导致通道数据未被消费、文件写入375 收藏 -
Golang · Go问答 | 2星期前 | golang · 连接池 · database/sql · Go问答 · 数据库事务 · 连接池 事务 DBStats rows.Close Go database/sql
Go database/sql 里漏掉 Rows.Close,问题往往不是某一次查询报错,而是连接长期被结果集占着,最终让连接池等待堆积。本文从 DBStats 指标和事务生命周期入手,复现现象,解释 Rows、Tx 与连接归还的关系,并给出可复查的代码边界。374 收藏 -
Golang · Go问答 | 1天前 | 切片 · 并发安全 · golang · Go问答 · slices.Clone · 底层数组 并发修改 Go slices.Clone Go切片 切片容量
slices.Clone 能复制 Go 切片,但它解决的是底层数组共享,不等于深拷贝或并发安全。本文用容量边界、append 行为和嵌套引用三个检查点说明该怎么选。371 收藏 -
Go 的 map 不能用 == 比较内容,只有和 nil 比较才合法。本文从可比较类型规则出发,拆解 len、reflect.DeepEqual 与排序后序列化三种校验方式的边界,并给出测试和生产代码中的选择建议。369 收藏