Go问答
已收录文章:41篇
-
本文用问答方式解释 Go map 并发读写为什么会 panic,并给出从场景判断、锁保护、sync.Map、channel 单写到压测检查的完整选型流程。368 收藏
-
Golang · Go问答 | 3天前 | 闭包 · go · Go问答 · 循环变量 · Go1.22 · 代码迁移 · 闭包 循环变量 go vet Go问答 Go 1.22 for range loopclosureGo 1.22 后,for 循环里用 := 声明的循环变量按每轮独立处理,很多闭包捕获问题不再需要手写 v := v。但迁移时仍要看 go.mod 版本、go vet 结果和兼容边界。356 收藏
-
Golang · Go问答 | 5天前 | 连接池 · database/sql · Go问答 · 线上排查 · DBStats · MaxOpenConns Go数据库连接池 DBStats Go问答 sql.DB WaitCountGo 服务接口突然变慢,sql.DB 连接池被打满是常见原因之一。排查时要先看 OpenConnections、InUse、Idle、WaitCount 和 WaitDuration,再决定是降载、回滚、调连接数,还是修慢查询和事务占用。355 收藏
-
Golang · Go问答 | 1星期前 | pprof · trace · 性能排查 · Go问答 · 服务安全 · Go pprof 生产环境 trace 安全入口 net/http/pprof 性能排障Go 服务不建议把 /debug/pprof/ 直接暴露到公网。pprof 和 trace 能帮助排障,也可能暴露运行时细节;更稳的做法是本机或内网采集、加鉴权、短时开启并留下操作记录。349 收藏
-
Golang · Go问答 | 4天前 | sync.Pool · reset · 对象复用 · Go问答 · 线上排查 · Go sync.Pool Go问答 sync.Pool串数据 Reset清理 对象池复用Go 项目里用 sync.Pool 降低临时对象分配时,如果对象归还前没有清理字段,下一次 Get 可能拿到带旧状态的对象,表现为用户数据串到别的请求、切片内容残留或缓存字段异常。稳妥做法是使用后先 Reset,再 Put;Get 后只做必要初始化,并且不要把仍在使用的对象提前放回池里。342 收藏
-
Golang · Go问答 | 5天前 | EventSource · sse · Go问答 · http.Flusher · 实时推送 · EventSource FLUSH text/event-stream Go问答 http.Flusher Go SSEGo 写 SSE 接口时,浏览器 EventSource 连上却不显示消息,常见原因是响应没有按 text/event-stream 格式输出、写入后没有 Flush、代理层开启了缓冲,或者连接超时策略不适合长连接。本文用一个最小示例拆清排查路径和修复要点。333 收藏
-
本文回答 Go range 循环变量取地址为什么容易踩坑:旧语义下多个指针可能指向同一个循环变量,Go 1.22 后每轮变量语义改变,但如果目标是修改原切片元素,仍应使用索引取址。319 收藏
-
本文解释 Go for range 中 goroutine 打印错值的问题,区分 Go 1.22 新循环变量语义和旧模块行为,并给出版本检查、代码排查、兼容写法和验证清单。315 收藏
-
Golang · Go问答 | 1星期前 | JSON · time.Time · 接口设计 · Go问答 · encoding/json · encoding/json API响应 JSON序列化 time.Time omitempty Go问答 omitzeroGo 里 time.Time 是结构体零值,旧的 omitempty 不会按很多人期待的方式省略它。Go 1.24 起可用 omitzero;需要区分缺失和有值时,用 *time.Time 更清楚。315 收藏
-
Golang · Go问答 | 2星期前 | JSON · 接口设计 · Go问答 · nil slice · Go 接口兼容 json.Marshal nil slice empty slice 数组字段回答 Go nil slice 和空 slice 在 JSON 输出上的差异,说明为什么一个是 null、一个是 [],并给出接口数组字段统一成 [] 的代码写法、回归检查和迁移清单。305 收藏
-
Golang · Go问答 | 1星期前 | HTTP · sse · Go问答 · 用户体验 · 流式响应 · Go EventSource SSE Go问答 Server-Sent Events 长任务进度 http.Flusher用 Go net/http 实现一个长任务进度 SSE 接口,讲清任务提交、事件格式、http.Flusher、浏览器 EventSource、心跳保活、断开取消和资源清理。293 收藏
-
Golang · Go问答 | 3天前 | 并发 · map · RWMutex · sync.Map · Go问答 · 数据竞争 RWMutex sync.Map map并发读写 Go问答 concurrent map read and map writeGo 原生 map 不是并发安全容器,只要一个 goroutine 写 map,同时另一个 goroutine 读或写同一个 map,就可能触发 concurrent map read and map write。生产代码要按访问模式选择 RWMutex、单协程归口或 sync.Map。291 收藏