Go问答
已收录文章:86篇
-
Golang · Go问答 | 1个月前 | JSON · 后端开发 · Go问答 · encoding/json · 接口解析 · JSON解析 encoding/json DisallowUnknownFields Go问答 RawMessage json.Decoder UseNumberGo 解析 JSON 不只看写法短不短。本文围绕字段稳定性、数据量、数字精度、未知字段和延迟解析,比较 struct、map、RawMessage 与 Decoder 的适用场景。151 收藏
-
Golang · Go问答 | 1个月前 | goroutine · Context · 超时控制 · Go问答 · 协程泄漏 · Go Goroutine 超时控制 context.WithTimeout 取消信号 协程泄漏 ctx.Donecontext.WithTimeout 只会在到期后关闭 Done 通道并返回取消原因,不会直接停掉 goroutine。Go 代码要把 ctx 传进阻塞调用,并在 select、循环和清理逻辑里主动响应取消信号。147 收藏
-
Golang · Go问答 | 1天前 | 并发 · time · 定时任务 · Timer · Ticker · Go问答 · 定时器 Go 定时任务 停止 time.Ticker time.After time.NewTimerGo 里一次性超时、可重置等待和周期任务分别适合 time.After、time.NewTimer 与 time.Ticker。本文用三个小场景对比它们的触发语义、停止方式、慢任务边界和 Go 1.23 定时器变化,给出可直接复用的选择规则。144 收藏
-
本文回答 Go 里 sync.Once 为什么能保证函数只执行一次、多个协程同时调用时内部做了什么、以及在配置加载、单例初始化和懒加载里怎么安全复用。142 收藏
-
Go 1.21 引入的内置 clear 可以直接清空 map 或切片,但它不会让并发访问变安全,也不会替你决定是否复用底层存储。本文从请求缓存复用场景对比 delete 循环、重新 make 和 clear 的语义、容量与并发边界。137 收藏
-
Go 的 internal 包不是用来显得项目高级,而是给仓库内部代码加编译期边界。判断重点看复用范围、依赖方向、测试替身和未来演进成本。127 收藏
-
Golang · Go问答 | 2天前 | WebAssembly · Go问答 · 前端交互 · 浏览器存储 · syscall/js · Go localStorage WebAssembly syscall/js js/wasm Wasm运行时脚本Go 编译到浏览器 WebAssembly 后,可以通过 syscall/js 调用 localStorage。关键是使用 GOOS=js GOARCH=wasm 构建,保持 Wasm 运行时脚本与编译器大版本一致,把 JavaScript 调用收口并处理存储不可用、JSON 损坏和 MIME 类型错误。122 收藏
-
Golang · Go问答 | 1个月前 | goroutine · HTTP · Context · 超时控制 · Go问答 · WithTimeout Go问答 context取消 QueryContext HTTP请求取消 goroutine退出Go HTTP 请求断开后,r.Context() 会收到取消信号,但服务端慢任务不会凭空停止。只有把 context 继续传给数据库、下游 HTTP 调用、消息消费和 goroutine,取消与超时才会真正变成资源释放动作。120 收藏
-
Go 服务出现 too many open files 时,先不要只把 ulimit 调大。更可靠的处理顺序是确认 FD 是否持续增长、按类型定位 HTTP 响应体/文件/SQL Rows 的释放缺口、在小流量修复后观察 FD 回落,再决定是否需要调整进程限额。文章给出可直接照着做的线上判断、代码修复、回退和告警检查。115 收藏
-
Go 里用 slices.Delete 删除元素后,切片长度变小不代表底层数组立刻释放。要结合 Go 版本、元素类型、尾部引用是否清零和切片是否继续持有容量来判断 GC 边界。本文从批量过滤场景拆开删除、复用与内存回收的关系。112 收藏
-
Golang · Go问答 | 3星期前 | golang · 超时 · HTTP · Go问答 · Transport · 网络排查 · 连接超时 http.Transport Client.Timeout Go HTTP 客户端超时 TLS握手超时Go 的 http.Client 超时太粗时,DNS、建立连接、TLS 握手和响应读取会混在同一个等待里。本文用一段可复现的慢请求场景拆开 Transport 参数,给出基线指标、改动方案和复测边界。112 收藏
-
通过一个 Go map 并发读写 panic 案例,解释普通 map 为什么不是并发安全的,并对比 RWMutex、sync.Map、分片 map 和 channel 拥有者模式的适用场景。109 收藏