Go语言技术文章
-
设置 GOOS 和 GOARCH 只改变 Go 的目标平台,不会自动提供目标平台的 C 编译器、头文件和库。本文按 cgo 开关、CC 工具链、编译与链接错误四层排查交叉构建失败。351 收藏 -
Go archive/zip 读取中文文件名时,应先查看 ZIP 的 UTF-8 标志位与 File.NonUTF8,再决定是否做 GBK 或 GB18030 转码。本文给出默认读取、来源确认、显式解码和路径安全检查的完整边界。363 收藏 -
用 *_test.go 保存普通测试,用 integration 或 e2e 标签隔离数据库、消息队列和外部服务测试;本文说明标签写法、默认命令、集成命令与 go list 排查方法。262 收藏 -
filepath.WalkDir 不会跟随符号链接进入目标目录,因为它按链接目录项本身判断 IsDir。本文用一个小型扫描器解释 DirEntry、Type、Info 与 EvalSymlinks 的边界。361 收藏 -
迁移 Go 构建约束时,//go:build 与 // +build 必须表达同一条件;理解空格、逗号和多行的逻辑,再用 gofmt、go vet 和跨平台构建检查结果。496 收藏 -
filepath.WalkDir 中 fs.SkipDir 是跳过目录的控制信号,普通非 nil error 才会终止整棵目录树;文件节点返回 SkipDir 还会影响其父目录。172 收藏 -
Go build tags 同时写平台和自定义条件时,文件未被选中通常不是 go build 失效,而是 &&、||、-tags 传值或文件名隐式约束叠加后的结果。本文用 go list 逐层排查。386 收藏 -
使用 filepath.WalkDir 遍历目录时,权限错误不一定要让整棵目录树停止。本文说明如何区分目录与文件错误,正确使用 filepath.SkipDir,并保留非预期错误。167 收藏 -
只读构建环境中,-mod=vendor 才是强制使用 vendor 的开关;-mod=readonly 只是不允许修改 go.mod。本文区分三种模式、GOPROXY=off 与 vendor/modules.txt 一致性,并给出适合 CI 的固定配置。177 收藏 -
Go os.OpenFile 的第三个参数不是跨平台 ACL 开关。本文拆分 flag、perm、Windows 只读属性和 ACL,解释 0644 在 Windows 上为何不能等同于 Unix 权限,并给出跨平台写文件的排查清单。308 收藏 -
修改 go.mod、go get 或 replace 后,vendor/modules.txt 可能与模块图失配。本文按单模块、工作区、替换依赖三个边界说明如何重建 vendor 并用 vendor 模式复查。456 收藏 -
os.OpenFile 的 O_CREATE 只负责文件不存在时创建,不提供独占创建保证。并发生成同一文件时,应使用 O_CREATE|O_EXCL,并处理 os.ErrExist、部分写入和读取时机。433 收藏 -
Go modules 使用 vendor 并不等于所有命令都离线。本文区分 go build、go test 与 go mod tidy、go mod vendor、go get 的依赖访问边界,说明 vendor/modules.txt、GOFLAGS 和 CI 策略如何影响网络请求。316 收藏 -
Go 的 O_APPEND 负责把写入定位到文件末尾,O_TRUNC 则在打开可写文件时清空已有内容。本文用一个小工具拆解两者组合,给出覆盖写、追加写和安全新建的选择方法。493 收藏 -
Go vet 默认只启用高置信度检查,shadow 变量遮蔽分析由 golang.org/x/tools 单独提供。本文解释它没有默认启用的原因、内外层 err 的风险、固定版本运行命令,以及接入 CI 时如何处理误报。392 收藏