Go教程技术文章
-
Go 1.27 将 unicode 包及相关支持从 Unicode 15 升到 Unicode 17。本文用 RangeTable、IsLetter、IsDigit 和 UTF-8 校验拆开说明升级后业务字符规则的回归边界。185 收藏 -
strings.FieldsFunc 适合按字符规则切分文本,但它会合并连续分隔符并丢弃空字段。本文用配置行解析场景说明它的边界,并给出保留空字段的自定义写法。184 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · go · Go 1.27 · 并发测试 · HTTP 测试 · testing/synctest Go 1.27 httptest.NewTestServer Go 并发测试 内存网络
Go 1.27 为 httptest 增加 NewTestServer,默认使用内存网络;testing/synctest 则负责隔离并发测试中的 goroutine 与虚拟时间。本文用一个异步 HTTP Handler 示例说明两者的连接方式、等待边界和不适用场景。184 收藏 -
Go 测试里可以用 testing.T.Setenv 临时设置环境变量,测试和子测试结束后由 Cleanup 恢复原值。本文说明缺失值与空值的区别,以及为什么 Setenv 不能和 t.Parallel 或并行祖先一起使用。184 收藏 -
用可复用的 []byte 缓冲调用 strconv.AppendQuote,连续构造带引号字符串,减少中间字符串和无效扩容,并厘清 Go 字符串字面量与 JSON、URL 编码的边界。184 收藏 -
Golang · Go教程 | 14小时前 | go · io.Reader · 字节处理 · bytes.Reader · reset size Seek bytes.Reader len ReadAt
解释 Go bytes.Reader 中 Len、Size、Read、ReadAt、ReadRune、Seek 和 Reset 的关系,帮助定位读取后长度变化与游标位置不一致的问题。184 收藏 -
Go 服务里记录 panic,关键是把 recover 放进 defer 函数,并用 runtime/debug.Stack 保存当前 goroutine 的调用堆栈,再补上请求标识和恢复边界。183 收藏 -
Go 1.24 引入 os.OpenRoot 后,如何把用户传入的相对路径限制在指定目录内?本文用一个可运行的文件读取示例,验证正常打开、绝对路径和 .. 目录逃逸三类结果。182 收藏 -
掌握 Go test 的 -run、-count=1 和 -count=N:精确筛选顶层或子测试,排除成功缓存,并重复验证偶发失败。182 收藏 -
Go 处理大文件 multipart 上传时,不要用 io.ReadAll 把正文全部读入内存。本文用 multipart.Reader 逐个读取 Part,配合请求总量和单文件上限、临时文件改名与失败清理,完成一套可落地的流式保存写法。181 收藏 -
用 Go embed 把默认 YAML 配置和 HTML 模板打进二进制,配合 fs.Sub、template.ParseFS 与外部配置覆盖,解决部署时漏带资源和路径写错的问题。180 收藏 -
io.LimitReader 到达 N 字节后会主动返回 EOF,后续底层错误自然无法被观察。本文用请求体上限场景说明错误为何消失,并给出 max+1 检测超限的写法。180 收藏 -
浏览器上传大文件时,Go 服务端要把分片编号、字节范围、校验和与合并状态分开设计。本文用可落地的 HTTP 接口拆解 Range 边界、重复分片、失败重试和断点恢复。179 收藏 -
Go 1.25 为 sync.WaitGroup 增加 Go 方法,把启动 goroutine、计数和 Done 收口到一个调用里。本文对比旧写法,说明空 WaitGroup 的启动时机、panic 约束、嵌套任务和复用边界。179 收藏 -
用 Go 标准库 log/slog 为请求日志绑定稳定的组级属性,比较 With 与 WithGroup 的差异,并通过并发测试确认字段不会串请求。178 收藏