Go教程技术文章
-
Go json.Decoder.Token 会按顺序读取 JSON 流中的分隔符、键和值,并在自然结束时返回 io.EOF。本文说明返回类型、嵌套层级、Token 与 Decode 的配合方式,以及截断输入和非法结构的处理边界。427 收藏 -
fs.ValidPath 判断的是 io/fs 名称语法,不是任意本机相对路径。通过路径元素示例和 Open 封装,区分根目录特例、业务命名、本地转换、文件存在性与实际访问错误。426 收藏 -
Go plugin 并不是可随意替换的跨版本动态模块。本文拆解工具链、构建参数、公共依赖和平台边界,并给出同环境构建与 RPC 解耦的选择方法。426 收藏 -
从字符串排序迁移到 netip.Addr.Compare:本文用 ParseAddr 和 sort.SliceStable 对 IPv4、IPv6 地址做稳定排序,并说明非法输入、相同地址和 IPv6 zone 的边界。425 收藏 -
Go x/text/language Matcher 可以把用户偏好的 BCP 47 语言标签匹配到站点支持列表。本文从支持语言与回退项开始,演示 MatchStrings、返回索引和 PreferSameScript 的使用边界。425 收藏 -
Go context.AfterFunc 会在 Context 取消后异步执行收尾函数,但 stop 返回 false 不等于收尾已经完成。本文用资源清理场景说明注册、正常结束、取消等待和并发边界,避免把 stop 当成同步等待函数。425 收藏 -
Go ascii85.Encode 的关键不是把目标切片容量设大,而是让目标切片长度足够,并用返回值截取有效结果。本文用 MaxEncodedLen 预留空间,解释 dst[:n]、尾部片段、z 缩写以及一次性编码和流式编码的边界。424 收藏 -
Go strconv.ParseFloat 的 bitSize 选择浮点精度而非小数位数。本文用传感器读数入口说明舍入、范围错误、NaN与无穷大,以及业务上下限的处理。424 收藏 -
Go io/fs 的 FileInfo.ModTime 不是直接读取宿主机文件,而是读取文件系统实现提供的元数据。本文用 fs.Stat 和 fstest.MapFS 说明如何读取、判断零值、统一展示时区,并解释虚拟文件系统为什么可能没有可靠的真实修改时间。423 收藏 -
Go atomic.Uint64.CompareAndSwap 把旧值比较和新值写入绑定为一次原子条件更新。本文对比 Load 加 Store 的竞态,给出一次尝试与带重试的写法,并说明 false、零值、多字段一致性和高竞争边界。423 收藏 -
用os.OpenRoot和Root.OpenFile在指定目录树内创建新文件,区分Create截断与O_EXCL防覆盖,并说明写入关闭错误、父目录和平台边界。422 收藏 -
Go 实验性 simd 运算应按 Len 动态分块,并单独处理不足一向量的尾部。本文以 uint32 切片加法说明实验构建、宽度测试、数据契约与标量回退,避免把固定寄存器宽度写进可移植代码。421 收藏 -
讲清 Go 1.27 net/http 如何在 HTTP/2 服务端接收并处理 RFC 9218 客户端优先级信号,说明 DisableClientPriority 的默认行为、适用条件和排查方法。421 收藏 -
从定义方是否知情、目标是否属于标准库内部、是否依赖未导出契约三项信号判断 Go linkname 的迁移优先级,并给出 handshake、构建、符号和行为回归方案。420 收藏 -
ssa.NewProgram 用 FileSet 和 BuilderMode 创建空的 SSA 程序容器。本文说明初始化写法、包注册与函数体构建的区别,并比较手动入口和 ssautil 辅助函数的适用条件。420 收藏