Go教程技术文章
-
围绕 Go modules replace、vendor 与 module 模式,说明如何确认依赖来源、生成 vendor/modules.txt、统一构建参数并保留可回退的迁移清单。184 收藏 -
用 Go modules replace 在不改 import 路径的前提下临时指向本地模块,说明 require、go.mod、go list -m -json 与提交前清理之间的排查关系。258 收藏 -
用 go:generate 固定生成入口,在 go build 前检查生成结果与源定义是否同步,覆盖命令边界、差异检查、工具依赖和提交策略。220 收藏 -
围绕 go generate 的指令、工作目录、环境变量和输出边界,整理一套可重复执行的 Go 代码生成方案,并给出 CI 差异检查清单。188 收藏 -
Go go generate 的参数直接跟在生成命令后面,双引号可以保留带空格的单个参数,GOFILE 等自动变量适合减少硬编码。本文用 flag 和 -command 给出可维护的配置方法。414 收藏 -
Go unsafe 指针转换的关键不只是地址能否转,而是对象在底层调用结束前是否仍然可达。本文用直接传参、runtime.KeepAlive 和 unsafe.Add 说明安全边界。123 收藏 -
用 Go unsafe.Slice 把数组建立为共享存储的切片视图,说明空数组、长度边界、对象存活和 uintptr 暂存的风险,以及生产发布前的检查清单。358 收藏 -
用 Go unsafe.Sizeof、Alignof、Offsetof 拆解结构体字段偏移、内部 padding 与尾部对齐,给出字段顺序优化方法和跨架构使用边界。429 收藏 -
Go reflect 中 ConvertibleTo、AssignableTo、CanConvert、CanSet 与接口断言职责不同。本文用命名类型、接口字段和动态值示例说明转换、赋值与断言的边界,帮助反射代码减少 panic。206 收藏 -
Go reflect 中 CanAddr 与 CanSet 不是一回事。本文用 ValueOf、Elem、结构体字段、切片元素和 map 索引拆解 Set panic,并给出可复查的安全写入方法。136 收藏 -
用 Go reflect 读取结构体字段标签时,先统一处理指针与结构体类型,再结合 StructField.Tag 的 Get 或 Lookup 读取标签,并正确拆分 json 等逗号选项。186 收藏 -
通过 Number 约束和 []T 值参数,让 Go 泛型调用从 Sum[Cents](amounts) 简化为 Sum(amounts),并说明不能推断时应保留显式类型参数的边界。370 收藏 -
Go 泛型切片算法不必一开始就抽象成复杂接口。本文从算法实际操作出发,讲清 []E 与 ~[]E 的选择、元素约束拆分、类型推断和命名切片边界。230 收藏 -
用 K comparable 和数值联合约束抽象 Go 求和逻辑,保留整数、浮点数及自定义数值类型的返回类型,并说明 ~、类型推断与边界。157 收藏 -
用 Go 1.23 的 maps.DeleteFunc 批量清空 map,理解保留容器、别名可见性、nil map、容量与并发访问之间的边界。345 收藏