Go教程技术文章
-
Golang · Go教程 | 2星期前 | 标准库 · JSON · go · 后端开发 · 版本迁移 · JSON Go 1.27 encoding/json/v2 encoding/json/jsontext GOEXPERIMENT
Go 1.27 带来 encoding/json/v2 与 encoding/json/jsontext。本文从旧 encoding/json 兼容边界开始,演示 v2 的选项配置、重复字段和非法 UTF-8 的回归检查,并给出灰度试用与 GOEXPERIMENT=nojsonv2 回退清单。195 收藏 -
Golang · Go教程 | 6天前 | 字符编码 · 字符串处理 · Go教程 · 输入校验 · 字符串校验 unicode/utf8 DecodeRuneInString utf8.ValidString 非法UTF-8
Go string 可能保存非法字节,整段校验用 utf8.ValidString,需要定位时检查 DecodeRuneInString 返回的 RuneError 与 size==1,允许继续处理则用 strings.ToValidUTF8,并记录是否发生清洗。195 收藏 -
Go embed.FS 的读取路径相对当前包目录,并统一使用正斜杠。本文用直接读取与 fs.Sub 两种写法说明如何处理目录前缀、跨平台分隔符和常见路径错误。195 收藏 -
本文用一个 Go HTTP 接口示例,把 log/slog 的 JSONHandler、Logger.With、请求字段和本地检查串起来,说明如何把普通日志变成可检索、可过滤、可定位的结构化日志。194 收藏 -
用 Go 的 crypto/rand.Int 生成 [0,n) 范围内均匀分布的随机下标,说明 big.Int 上界、拒绝采样、空切片和错误处理。194 收藏 -
讲清 Go embed.FS 读取请求资源时 fs.ValidPath 的斜杠路径规则、反斜杠边界,以及如何区分非法路径和资源不存在。194 收藏 -
Go html/template 复用页头、页脚和基础布局,关键是拆分 layout、partial、page 三类模板,用 embed.FS 配合 template.ParseFS 解析,再通过 block 注入页面正文。193 收藏 -
Go 的 encoding/csv 将 FieldsPerRecord 设为负数后会允许记录拥有不同列数,但列数约束不会自动消失。本文用一段可复用代码把语法解析、业务列数校验和字段映射分开。193 收藏 -
Go slog 的 AddSource 能把日志调用点写进 source 字段,排查并发服务时很有用,但每条日志都要承担调用点定位和格式化成本。本文用可验证的基准与生产开关说明它的代价、适用范围和安全切换方式。192 收藏 -
Go 的 O_APPEND 只把每次写入的起点交给内核保证,不等于整条日志天然不可交错,也不替日志轮转解决文件描述符和重命名边界。文章用可运行示例拆开偏移、并发写入和轮转后的处理方式。192 收藏 -
Go 访问内网 HTTPS 服务时,用 x509.CertPool 加载自签名 CA 并注入 tls.Config.RootCAs,保留证书链与主机名校验。192 收藏 -
Go testing.T.Helper 只改变测试失败日志的调用层级,不改变断言结果或控制流。本文用多层断言和子测试示例说明应该在哪里标记,以及常见误区。192 收藏 -
os.CopyFS 适合把一棵目录树复制到目标目录,但符号链接、目标已存在和中途失败会改变结果。本文用可运行示例拆开复制边界、错误判断和失败后的清理策略,帮助你避免把链接误当成普通文件。191 收藏 -
net/textproto 的 ReadMIMEHeader 没有公开的大小参数。本文区分自定义文本协议与 HTTP 服务端两种场景,分别用受限 reader 和 Server.MaxHeaderBytes 控制头部边界,并说明超时、头部值数量和请求体限制的区别。191 收藏 -
用 Go 标准库 net/netip 解析 CIDR 网段,区分掩码规范化与原始配置,演示 Prefix.Contains 的边界判断,并给出配置文件校验和错误处理方式。190 收藏