Go教程技术文章
-
Go GODEBUG 并不是简单的“一次运行开关”。本文区分临时环境变量、shell 继承、go.mod 的 godebug、//go:debug 和进程启动后的修改边界,帮助你判断配置到底影响谁。199 收藏 -
用 Go net/http 实现一个可取消的 SSE 心跳服务,串起 Flusher、Request.Context、断线检测和资源回收,重点看连接结束后如何让后台工作及时停下来。198 收藏 -
Go json.Decoder 的 Token 会逐个返回 JSON token。本文用 json.Delim 和深度计数识别对象、数组的嵌套边界,并说明对象字段、数组元素、EOF 与畸形输入的处理节奏。198 收藏 -
Go 1.20 引入 unsafe.StringData、unsafe.String 和 unsafe.SliceData 后,字符串与字节切片之间可以少一次复制,但指针生命周期、只读约束和空字符串边界必须一起核验。本文用可复现实验拆开这些风险。197 收藏 -
用 Go runtime/metrics 读取 Float64Histogram,理解 Buckets 与 Counts 的对应关系,并用快照估算延迟分布的中位数和高分位边界。197 收藏 -
Golang · Go教程 | 1星期前 | HTTP · 文件上传 · Go教程 · 错误排查 · 文件上传 Go multipart/form-data mime/multipart boundary
Go 的 mime/multipart 报错时,先检查 Content-Type 里的 boundary,再对照请求体分隔线、CRLF、结束标记和 ReadForm 限制。本文给出发送端与解析端的稳定写法和排查清单。197 收藏 -
服务启动后,配置、正则或只读客户端常常只需要初始化一次,却要被多个 goroutine 安全读取。本文用 Go 标准库的一次性值函数演示惰性初始化、结果缓存、panic 复用与测试边界,说明它和手写 sync.Once 的取舍。196 收藏 -
Golang · Go教程 | 4星期前 | 标准库 · 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教程 | 2星期前 | 字符串处理 · 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 fuzz 测试发现崩溃输入后,如何利用 testdata/fuzz 语料目录在普通 go test 中稳定回归。195 收藏 -
用 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 收藏