Go教程技术文章
-
以资源清单页说明embed.FS如何作为ParseFS模板来源,区分嵌入路径、解析范围与define模板名,并处理片段未定义、工作目录和重新构建问题。419 收藏 -
围绕 Go io.WriterTo 与 io.Copy 的源端复制路径,说明如何实现 WriteTo、如何处理短写和错误,以及包装类型和 ReaderFrom 会怎样改变快路径选择。418 收藏 -
Go encoding/binary.Append 能把固定大小的数据按指定字节序追加到已有 []byte,并返回新的切片与错误。本文说明返回值、容量复用、ByteOrder 以及 AppendUvarint 的选择边界。418 收藏 -
Go 的 token.File.String 会输出文件名与 Pos 范围,而不是行列号。本文用 FileSet、Base、End、Pos 和 Position 的关系,拆清格式化文件对象与定位源码位置的使用边界。417 收藏 -
Go 1.27 的 encoding/json/v2 提供 UnmarshalRead,适合从 HTTP 请求体、文件或其他 io.Reader 解码一个完整 JSON 值。本文从请求体尾随数据的故障现场出发,说明 EOF、单值输入、大小限制、错误分类,以及多值流为何应该改用 UnmarshalDecode。417 收藏 -
Go 1.26 的 go fix 支持 //go:fix inline,可把旧函数、常量或类型别名迁移到新 API。本文从薄包装、diff 预览、参数副作用、defer 与测试边界说明如何准备规则。417 收藏 -
Go 的 math/bits.Rem64 用 hi、lo 两个 uint64 表示双字无符号被除数并返回余数。本文说明参数含义、零除数边界,以及 Rem64 与 Div64 在商溢出处理上的区别。417 收藏 -
Go regexp.FindAllString 返回的是每次完整正则命中的文本。本文用一个日志片段提取小工具说明 n 参数、无匹配、空匹配,以及它和捕获组、字节下标 API 的区别。416 收藏 -
Go netip.Addr.AppendBinary 适合把 IPv4 或 IPv6 地址追加到已有字节切片。本文说明返回切片、IPv4/IPv6 长度、零值错误和协议字段边界。415 收藏 -
用一个小型 Go 工具说明 bytes.CutSuffix 如何处理固定后缀、如何判断 found,以及空后缀、未匹配和底层切片共享的边界。415 收藏 -
Go 的 ed25519.PrivateKey 是 64 字节表示,而 RFC 8032 语境里的种子是 32 字节。本文用 PrivateKey.Seed 读取种子,说明如何校验长度、复制敏感材料,以及用 NewKeyFromSeed 重新构造私钥。414 收藏 -
Go math/big.Int.CmpAbs 专门比较两个大整数的绝对值,适合处理负数参与的幅度、阈值和排序判断。本文对比 Cmp 的有符号语义,说明返回值、零值、指针和迁移边界。413 收藏 -
使用 go/parser 分析 Go 源码时,ParseComments 决定 AST 是否保留注释。本文从 ParseFile、ast.File.Comments 和声明 Doc 注释入手,给出可直接改造的解析示例。413 收藏 -
Go io.SectionReader 的 ReadAt 使用 section 内相对偏移,不会推进 Read 使用的当前读取位置。本文说明 base、当前偏移和 limit 的边界,给出定位读取、短读和 EOF 的处理方式。412 收藏 -
Go archive/zip 的 Reader.Open 可以按 fs.FS 的路径语义直接打开 ZIP 成员。本文说明如何使用斜杠路径读取指定文件、关闭返回的 fs.File,并处理成员不存在、前导斜杠、父目录和遍历元数据等边界。412 收藏