Go语言技术文章
-
Go Ticker.Stop 不会关闭通道,也不会终止工作 goroutine。通过串行周期任务示例,说明计时器所有权、Context 取消、done 完成确认,以及慢任务和新旧计时通道语义。295 收藏 -
Go 子测试调用 t.Parallel 后,循环变量、临时资源和进程级状态都可能造成互相影响。本文用一个表格驱动测试拆开共享来源,给出输入绑定、资源隔离、清理边界和复查命令。295 收藏 -
net.ParseIP 返回可变语义的 net.IP 字节切片,失败时返回 nil;netip.ParseAddr 返回可比较、不可变的 netip.Addr 和 error,并支持 IPv6 zone。本文按兼容旧接口、集合去重、错误处理和 IPv4 表示说明两者差异与迁移边界。295 收藏 -
Go 标准库 encoding/base64 的 AppendEncode 可以把编码结果直接追加到已有字节切片。本文按完整工作流解释容量预留、返回切片、URL-safe 编码和多段追加的边界。295 收藏 -
讲清 Go x/text/message MatchLanguage 的参数顺序、语言回退和 Printer 使用边界,用同一个 language.Tag 统一翻译文本与地区数字格式。295 收藏 -
Go maphash.Hash 的哈希结果取决于 Seed 与写入字节序列,而不是字节通过 WriteString 还是 Write 进入。本文说明两条写入路径的等价条件、顺序边界、Reset 用法和 Hasher 中的编码方式。295 收藏 -
Go encoding/json 可用三态值字段区分缺失、显式 null 与正常整数。示例说明自定义解码、错误结果隔离和批次状态重置,并讨论固定结构的分配取舍。295 收藏 -
json.RawMessage 可以先保留不确定结构的 JSON 字段,再按 kind 选择具体结构体二次解析。本文拆分字段缺失、null、合法结构和类型不匹配,说明结果为空的常见原因与排查清单。295 收藏 -
Go SSE 推送的关键不是循环 Write,而是用 ResponseController.Flush 提交事件,用 ticker 心跳维持空闲连接,并通过 Request.Context 感知客户端断开后停止生产。294 收藏 -
Go os.OpenFile 配合 O_CREATE 和 O_EXCL,可以把文件不存在检查与创建合并成一次独占操作。本文说明先检查再创建的竞态、已存在错误的判断、写入收尾和不同文件创建策略的选择。294 收藏 -
Go 1.20 起可以用 context.WithCancelCause 保存具体取消原因,再用 context.Cause 读取;本文区分 ctx.Err 的通用状态与 Cause 的诊断信息,并说明父子 context 的首次取消和超时原因设计。294 收藏 -
用 Go json.Decoder 连续读取多个 JSON 值,掌握 Decode 循环、io.EOF、数组边界和尾部缓冲的生产处理方式。294 收藏 -
Go 1.27 默认将 runtime/pprof goroutine labels 纳入部分 traceback 输出,可用 GODEBUG=tracebacklabels=0 为单个进程关闭标签,并区分环境变量、go.mod 与 //go:debug 的配置边界。294 收藏 -
Go 的 multipart.Writer 默认使用随机边界。本文围绕 SetBoundary 讲清合法边界、调用时机、Content-Type 同步和 Close 收尾,给出可直接改造的上传请求示例。294 收藏 -
Go mod why 可以从主模块到目标包或模块给出最短导入路径。本文说明测试代码为什么会带入依赖,以及 -m、-vendor、go mod graph 怎样配合定位来源和版本关系。294 收藏