Go教程技术文章
-
Go embed.FS 读取模板时,问题通常不在模板语法,而在嵌入模式和 FS 内部路径没有对齐。本文从目录映射、ReadDir/ReadFile 到 template.ParseFS,说明如何避免结果为空或路径不符合预期。208 收藏 -
Go JSON v2 自定义编码器按类型而非字段名匹配。以独立字段类型、MarshalToFunc 与 WithMarshalers 为例,解释调用范围、字符串编码、递归和错误处理,并明确 Go 1.25 实验接口的使用前提。207 收藏 -
Go cmp.Compare 返回 -1、0、1 三种排序结果,适合直接表达字段比较;多字段排序时可用 cmp.Or 保留第一个非零结果,再交给 slices.SortFunc。本文用订单示例说明升序、降序与浮点边界。207 收藏 -
Go net/mail.ReadMessage 会把原始邮件拆成解析后的 Header 和可继续读取的 Body。本文说明如何按顺序读取头字段与正文流、处理重复字段和大小写,并把 multipart 正文交给下一层解析。207 收藏 -
Go netip.Addr.As16 会把 IPv4、IPv6 地址统一转换为 [16]byte。本文说明 IPv4 映射形式、IPv6 区域标识、零值 Addr,以及什么时候应该改用 As4 或 Unmap。206 收藏 -
Go encoding/xml 的 Decoder.Skip 可以在已经读到目标 StartElement 后消费完整嵌套子树,让流式解析继续到下一个同级节点。本文说明调用前提、游标位置、错误处理,以及 Skip 与 DecodeElement 的取舍。206 收藏 -
本文从 root: 请求路径的实际问题出发,用 bytes.CutPrefix 解析协议前缀,再交给 Go 1.24 的 os.OpenRoot 和 Root.Open 读取受限根目录中的文件,并说明错误与关闭边界。206 收藏 -
Go ast.Unparen 可提取连续外层括号内部的表达式。本文用层数和节点类型对照配合完整代码,说明它与子树遍历、原树重写、节点共享和诊断位置范围的区别。206 收藏 -
把 C.CString 看成 C 堆上的临时副本:同步调用在分配后立即 defer C.free,C 侧长期保存时按明确的销毁契约释放,C.GoString 复制完成后再回收。205 收藏 -
Go 的 json.SyntaxError.Offset 表示解析器读过的字节数。本文用 error.As 取出语法错误,安全截取错误附近内容,再把字节偏移换算成行列位置,并区分 SyntaxError、InputOffset 与类型错误的适用边界。205 收藏 -
将 Expr 编译移出重复求值路径,保存并复用 vm.Program;通过完整 Go 示例说明 Env、AsBool、独立输入,以及规则更新和缓存失效的处理边界。204 收藏 -
Golang · Go教程 | 2星期前 | 标准库 · JSON · Go教程 · encoding/json · Go encoding/json Prefix JSON格式化 indent json.MarshalIndent
Go json.MarshalIndent 会先把 Go 值编码为 JSON,再用 prefix 和 indent 排版嵌套结构。本文区分两个参数的职责,说明接口、配置和日志场景的选型,并补充错误处理、json.Indent 与 HTML 转义的边界。204 收藏 -
Go 错误经过多层 %w 包装后,不能再依赖 == 或完整错误文本判断原因。本文用 errors.Is 处理多层 Unwrap,区分 errors.Unwrap 的单层职责,并说明错误分类与上下文包装的边界。204 收藏 -
Go database/sql/driver.Stmt.NumInput 决定 database/sql 是否能在执行前检查占位参数数量。本文用驱动实现视角说明返回非负数与 -1 的差异,帮助定位参数个数错误到底发生在预检阶段还是数据库执行阶段。204 收藏 -
围绕协议兼容、CRC32C 与流式更新,说明 Go hash/crc32 中 IEEE、Castagnoli、Koopman 和自定义校验表的选择方法。204 收藏