Go教程技术文章
-
同一仓库维护多个 Go 模块时,可以用 go.work 的 use 指令共享本地开发版本。本文说明如何初始化工作区、验证本地解析、区分 go.work 与 replace,并让 CI 用 GOWORK=off 回到独立模块测试。456 收藏 -
Golang · Go教程 | 1个月前 | golang · HTTP · go · 服务端 · 实战 · 安全配置 · http.server MaxBytesReader ReadHeaderTimeout Go HTTP 服务 请求体限制 响应头限制
Go 的 http.Server 默认足够启动一个接口,却不会替业务限定大请求体、慢请求头和响应写入时间。本文用上传接口的真实边界,拆解 MaxBytesReader、ReadHeaderTimeout、WriteTimeout 与 MaxHeaderBytes 的职责,并给出可复查的生产配置。455 收藏 -
Go 1.23 引入的 slices.Collect 能把 iter.Seq 收集成新切片,但它和手写 append 解决的问题并不完全相同。本文用真实代码比较两条批量转换路径,说明可读性、容量控制、空序列和性能验证边界。455 收藏 -
Golang · Go教程 | 1个月前 | golang · 配置 · 设计模式 · go · client · api设计 · Go 构造函数 Functional Options 函数选项 Client 配置 API 兼容
Functional Options 适合“少量必填参数稳定、可选项会逐步增加”的 Go Client 构造场景。它能避免频繁改函数签名,并让调用点保留 WithTimeout、WithRetry 这类具名配置;但配置总是成组出现、需要从文件反序列化,或只有一个可选值时,Config 结构体或新增构造函数往往更直接。关键不在模式名称,而在默认值、重复选项与兼容边界是否明确。454 收藏 -
bufio.Scanner 返回 false 不一定代表文件读完了,长 token、SplitFunc 规则和 Err 检查都会改变结果。本文用可运行示例拆开这几个边界,并给出读取大行时的修复方式。454 收藏 -
Go 1.24 新增的 testing.T.Context 会在测试函数结束、Cleanup 执行前取消上下文。本文用一个可复现的子协程收尾场景,讲清取消时机、Cleanup 顺序、超时边界和回归核对方法。454 收藏 -
用 Go 标准库的一次性初始化函数封装懒加载配置,验证成功值、初始化错误与 panic 缓存语义,避免并发请求重复初始化。453 收藏 -
围绕 Go 读取大文件时的内存峰值,拆解 os.ReadFile 的一次性分配、bufio.Reader 的流式边界、缓冲区大小选择和失败恢复检查。453 收藏 -
Golang · Go教程 | 2星期前 | 标准库 · 签名 · Go教程 · 密码学 · 接口兼容 · Go Go 1.25 crypto.MessageSigner SignMessage 签名器
Go 1.25 在 crypto 包中增加 MessageSigner 接口与 SignMessage 函数,用于兼容由签名器自行哈希消息和传统 Sign 方法。本文通过真实回退路径说明接口判断、哈希边界与错误处理。453 收藏 -
Go 的 ServeMux 已经能按方法、主机和路径匹配请求,Request.Pattern 可以把最终命中的模式带进日志。本文用一个最小路由示例比较精确路径、通配符和方法匹配,并说明空 Pattern 的边界。452 收藏 -
Go container/heap 不会自动感知元素 priority 的变化。通过维护 Item.index,并在修改后调用 heap.Fix,可以让优先队列恢复正确顺序;删除和批量变更则分别使用 heap.Remove 与 heap.Init。452 收藏 -
Golang · Go教程 | 1个月前 | 标准库 · go · html/template · 错误排查 · Web模板 · Parse 模板函数 Go html/template FuncMap 模板初始化
Go html/template 使用自定义函数时,FuncMap 必须在 Parse 或 ParseFiles 前注册,否则模板会在解析阶段报 function 未定义。本文用一个邮件通知模板的小实验,拆开注册顺序、模板错误定位、运行时参数校验和安全边界。451 收藏 -
Go regexp.Split 的 n 参数不是分隔符数量,而是返回子串数量上限。n<0 返回全部结果,n=0 返回 nil,n>0 最多返回 n 个子串并保留最后的未切分文本。451 收藏 -
用 Go 的 context.WithCancelCause 连接并发任务,让上游知道是超时、校验失败还是依赖服务异常,并用 Cause 做可验证的错误分类。450 收藏 -
Go 的 maphash.Bytes 适合把字节序列映射为进程内的 uint64 分桶值,但它不是加密摘要,也不能替代原文相等判断。本文用短键索引场景说明 MakeSeed、相同 Seed、不同数据结构实例和碰撞复核之间的边界。450 收藏