Go教程技术文章
-
说明 Go reflect.StructOf 适合的动态字段场景,演示如何用 StructField、JSON 标签和 reflect.New 创建可写运行时结构体,并梳理导出字段、嵌入方法与类型缓存边界。423 收藏 -
Go 标准库 maps.Clone 可以复制 map 的顶层键值结构,并保留 nil 输入的语义。本文用最小示例说明普通复制、nil 与空 map、浅复制边界、自定义 map 类型和旧环境替代写法。423 收藏 -
用互斥的 go:build 约束隔离 Go 的生产实现与测试替身,配合 go test -tags 和 go list 检查文件选择,避免测试代码误进入生产构建。423 收藏 -
strings.Builder 的 String 返回值可以保存并在后续写入或 Reset 后继续使用,但 Builder 本身不能复制;本文从 String、WriteString、Reset 和 Cap 的真实边界说明如何安全复用它。422 收藏 -
用 Go crypto/ecdh 运行示例核对 PrivateKey.Bytes 的固定长度、复制语义与 NewPrivateKey 校验边界,避免把敏感密钥材料当普通字节切片长期保存。422 收藏 -
Golang · Go教程 | 2个月前 | defer · Go教程 · 文件句柄 · 资源释放 · 数据库rows · defer for循环 文件句柄 资源释放 close Go教程 rows.Close
本文用问答方式讲清 Go defer 放在循环里的释放时机:它不是每轮结束就执行,而是等当前函数返回;大量资源循环应拆小函数或显式关闭。421 收藏 -
用 Go 的 http.ResponseController 实现流式 HTTP 响应,讲清 FlushError、写超时、客户端断开和资源清理之间的边界。421 收藏 -
Go 标准库的一次性初始化函数适合封装成可并发调用的闭包,但它缓存的是一次执行结果,初始化 panic 也会被重复传播。本文用真实源码路径拆开执行、结果可见性、失败语义与重置边界。420 收藏 -
Go 使用 bufio.Writer 写文件时,Write 可能只把数据放入内存缓冲区。本文解释 Flush、Close 与 File.Sync 的职责边界,给出正确的错误处理顺序和文件写入结束清单。420 收藏 -
通过 go mod why 的包级、模块级和 -vendor 查询,理解依赖路径范围,避免把解释命令误当成清理或版本选择命令。420 收藏 -
bytes.Buffer.Grow 不是越早调用越好。本文从容量、写入、Reset 和 Bytes 的真实关系出发,说明预留空间、复用缓冲区与避免长期保留大内存的边界。419 收藏 -
sync.Once 只保证初始化函数执行一次,不会替你重试或返回错误。本文用共享结果与错误状态封装初始化,让并发调用稳定拿到失败原因,并说明哪些情况应该改用显式重试。419 收藏 -
本文回答 Go 普通 map 并发读写为什么会报错,解释常见误区,并通过互斥锁、sync.Map、race 检查和封装访问给出可落地的选择方法。418 收藏 -
Golang · Go教程 | 2个月前 | defer · 单元测试 · testing · Go教程 · t.Cleanup · defer 单元测试 Testing 子测试 Go教程 T.Cleanup 测试资源清理
Go 测试代码里的临时文件、测试库、测试服务和环境变量,最好让清理动作跟随 testing.T 生命周期。本文对比 defer 和 t.Cleanup 的适用边界,给出可落地迁移清单。418 收藏 -
Go 1.23 的 slices.Chunk 可以把切片按批次遍历。本文比较手写下标循环、slices.Chunk 与复制切分的适用边界,重点说明子切片共享底层数组、容量被裁剪以及 n 参数的校验方式。418 收藏