Go语言技术文章
-
Go 的 http.Header 是 map[string][]string,直接赋值或只复制 map 仍可能共享值切片。本文从旧写法的串改问题出发,说明 Header.Clone 的隔离语义、nil 与多值边界,以及从手写复制迁移到 Go 1.13+ 标准方法的检查清单。306 收藏 -
Go 中 error 是接口类型。本文解释为什么底层 *MyError 为 nil 时,返回的 error 仍可能让 err != nil 成立,并给出返回边界的修复与测试写法。348 收藏 -
Go 配置中的 500ms、2s 和 1m30s 不能按普通整数读取。本文用 time.ParseDuration 拆开格式边界、错误处理、负数与溢出问题,并给出启动阶段集中校验的写法。432 收藏 -
CGO_ENABLED=0 会让 cgo 构建约束失效。本文从环境确认、文件筛选到纯 Go 实现配对,说明如何定位“找不到实现”并稳定检查两条构建分支。329 收藏 -
Go build tags 选错实现文件时,先确认 GOOS、GOARCH、CGO_ENABLED,再用 go list 对照 GoFiles 与 IgnoredGoFiles,最后检查文件名后缀、//go:build 表达式和 -tags 参数是否一致。496 收藏 -
Go 下载依赖卡在 sum.golang.org 时,先区分模块代理和校验数据库的网络边界,再按公共模块、私有模块或内网代理选择 GOPROXY、GOSUMDB、GOPRIVATE 与 GONOSUMDB,避免用全局关闭校验掩盖配置问题。290 收藏 -
Golang · Go教程 | 8小时前 | 并发 · Go教程 · trace.NewTask go tool trace Go runtime/trace 执行跟踪 trace.WithRegion
Go runtime/trace 不只是记录运行时事件,还能用 task、region 和 Log 标记一次跨 goroutine 的业务操作。本文从排查现场出发,说明如何把任务上下文传入 goroutine、如何标记区间,以及如何避免结束时机和标记粒度失控。391 收藏 -
Go replace 指向本地路径在 CI 失效,通常是 checkout 范围、相对路径基准、替代目录 go.mod 或主模块作用域不一致。本文按主模块、模块文件、require/replace 配对和流水线输入给出排查与修复顺序。224 收藏 -
Go 拉取模块失败时,先检查 go.mod 的 module 声明是否与仓库根路径、包导入路径和 /v2 主版本规则一致,再决定改 module、改 import 还是使用 replace。192 收藏 -
用自定义 Region 类型实现 TextUnmarshaler,接入 Go flag.TextVar,讲清默认值、非法参数与 TextVar、Var、Func 的选择边界。184 收藏 -
Golang · Go教程 | 10小时前 | 错误处理 · 模板 · Go教程 · html/template · 模板渲染 Go html/template missingkey 模板缺失字段 Execute错误
Go html/template 默认可能把 map 缺失键继续渲染,开发阶段容易把数据问题藏到页面里。本文比较 missingkey=default、zero、error 的差异,给出严格配置位置、Execute 错误处理和环境选择方法。371 收藏 -
Go html/template 会根据变量所在的 HTML、属性和 URL 上下文自动处理输出。本文对比普通文本、查询参数和完整链接的写法,说明不安全协议为何会被过滤,以及 template.URL 的可信来源边界。326 收藏 -
Go 项目把模板放进 embed.FS 后,不能继续按操作系统文件路径理解它。本文用 text/template.ParseFS 读取嵌入文件,说明 glob 模式、模板名称、ExecuteTemplate 和常见错误之间的关系。208 收藏 -
Go database/sql.NamedArg 可以把业务参数名和值一起传给数据库接口,但 SQL 占位符语法和驱动支持仍需匹配。本文用查询、重复引用和排错示例说明命名参数的正确边界。311 收藏 -
Gin 的 ShouldBind 会消耗请求体,第二次绑定常常只能拿到空内容。本文用 ShouldBindBodyWith 缓存同一份 body,演示两个结构体的绑定写法、错误处理和性能边界。134 收藏