Go问答技术文章
-
Golang · Go问答 | 3天前 | channel · golang · select · 并发编程 · 性能排查 · channel default分支 忙等 time.Ticker context取消 Go select
本文解释 Go select 的 default 分支为何会把阻塞等待变成高频轮询,并分别给出移除 default、加入 Context、使用 Ticker、封装单次非阻塞尝试及处理关闭通道的改法。465 收藏 -
Go 中 os.Open 和 os.Stat 通常会跟随符号链接,os.Lstat 与 os.Readlink 则用于观察链接本身;Windows 还会受到链接权限、目标类型和卷路径处理影响。本文用一组小代码梳理不同打开方式,并给出跨平台读取与测试建议。464 收藏 -
Go 默认把解码到 interface{} 的 JSON 数字变成 float64,UseNumber 则先保留为 json.Number。本文用示例说明精度变化发生在哪里、如何解析以及金额等场景的边界。463 收藏 -
Go cgo 交叉编译出现 C compiler not found,通常是交叉编译启用了 cgo,却没有把 CC 指向目标平台的 C 编译器。本文按环境变量、编译器匹配、sysroot 与无 cgo 回退路径逐层排查。463 收藏 -
Golang · Go问答 | 19小时前 | Context · 并发编程 · go语言 · 错误排查 · Go并发 context.AfterFunc sync.OnceFunc Stop竞争 重复清理
context.AfterFunc 返回的 Stop 只能阻止尚未开始的回调,不能等待已启动回调结束。本文用共享 OnceFunc 清理入口与 done 完成信号处理 Stop 和取消同时发生的竞争,并说明调用所有权、阻塞与独立清理 Context 的边界。463 收藏 -
os.Root 支持多个 goroutine 并发调用,但 Close 不是业务停机屏障。本文结合官方文档与源码说明在途操作、后续调用和已打开文件的不同结果,并给出先停止准入、排空任务、最后关闭 Root 的实现。461 收藏 -
json/v2 中 omitzero 按 Go 零值判断,omitempty 按 JSON 空值判断。本文用字段类型、IsZero 和迁移清单说明如何选择。461 收藏 -
讲清 Go 1.27 泛型方法为什么不能直接满足接口,并比较非泛型桥接、参数化接口与顶层泛型函数三种兼容设计。460 收藏 -
Go 程序退出前不能靠主函数自然返回来等待后台 goroutine。通过明确关闭输入、WaitGroup 等待和资源所有权,可以确认清理动作完成后再退出。459 收藏 -
Go 泛型约束里的 ~string、~int 表示一组底层类型相同的类型集合。本文用自定义类型和组合约束说明波浪线与精确类型项的区别,以及如何选择约束边界。459 收藏 -
Golang · Go问答 | 3天前 | 并发 · goroutine · go · pprof · 故障排查 · goroutine泄漏 并发排查 Goroutine生命周期 Go pprof runtime metrics
Goroutine 持续上涨不等于立刻报错。本文用运行时指标、双时点堆栈快照和退出协议,定位 channel、I/O、ticker 与重试链路中的泄漏入口。458 收藏 -
Golang · Go问答 | 3天前 | 并发 · channel · goroutine · go · Context · context 并发限制 工作池 Go channel worker pool Goroutine生命周期
任务总量小且有界时,每任务一个 goroutine 更简单;持续或无界输入、昂贵资源和容量有限的下游,更适合创建前限流或固定工作池。本文给出选择表与可取消实现。458 收藏 -
Go 内置 DNS 解析器执行 A+AAAA 或搜索域子查询时,StrictErrors 决定临时错误是允许返回部分地址,还是中止整体查询。本文说明其作用范围、宽松与严格代码写法、DNSError 分类和兼容性取舍。457 收藏 -
说明 Go bytes.Buffer.Next 的参数超过未读长度时会返回全部剩余字节并耗尽缓冲区,进一步解释切片有效期、精确定长读取和空缓冲边界。456 收藏 -
在 Go 服务之间使用 OpenTelemetry 时,HTTP 客户端和服务端 Span 不是靠 URL 或时间戳硬拼,而是依靠传播的 Trace Context 建立父子关系。本文用 otelhttp 拆解注入、提取和常见失配原因。456 收藏