Go问答技术文章
-
Go 程序在本机能解析、进容器却失败时,问题常常来自运行环境的 DNS 配置差异。本文用 net.Resolver、PreferGo、Dial 和 HTTP Transport 说明如何把 DNS 服务器配置注入正确的连接路径,并给出超时与排查边界。324 收藏 -
Go ldflags -X 没有把版本信息写进二进制时,先检查参数引号、目标变量声明和 importpath.name,再用可执行文件的版本入口做发布前确认。496 收藏 -
Go go env GOTOOLDIR 返回的是当前宿主工具链目录,不是 GOOS/GOARCH 目标目录。本文用 go env、工具文件检查和最终二进制复查,建立一套核对交叉编译路径的排障流程。438 收藏 -
Go generate 未执行预期指令时,区分注释未识别、包未选中、工具失败和输出目录偏移。通过包内生成器示例说明指令格式、工作目录、参数解析与产物责任。501 收藏 -
GOTOOLCHAIN=auto 会结合 go.mod 或 go.work 的版本要求选择工具链。本文拆开 local、auto、path 与 name+auto/name+path 的边界,说明启动选择、依赖触发切换和排查命令。330 收藏 -
Go workspace 明明写了 use 却没有使用本地模块,通常是路径没有指向 go.mod 所在目录、嵌套模块没有单独加入,或当前命令根本没有加载目标 go.work。本文按症状拆开判断和修复方法。479 收藏 -
Go replace 的本地目录替换不会随依赖库自动传递。结合应用与库发布场景说明主模块作用域、工作区掩盖、版本迁移和独立消费者检查。304 收藏 -
os.Executable 返回的是启动当前进程的可执行文件路径,但符号链接、文件替换和部署变更都会影响它是否仍指向预期文件。本文用最小 Go 示例说明错误处理、EvalSymlinks 与资源目录选择。403 收藏 -
Go checksum mismatch 不能靠盲目删除 go.sum 或关闭 GOSUMDB 解决。本文按公共模块、缓存污染、重新打标签和私有模块四种边界,给出一套保留完整性校验、可复查且适合提交到团队仓库的修复方法。409 收藏 -
Go GOPROXY 返回 404 时,先不要急着更换代理。本文从模块路径、主版本后缀、可用版本列表、代理回退规则和私有模块配置五个方面定位问题,配合 go list -m -versions 与 go mod download 找到真正缺失的是路径、版本还是来源。304 收藏 -
新增依赖没有出现在 Go vendor 中时,按模块图确认、重新执行 go mod vendor,再用 vendor/modules.txt 和 -mod=vendor 构建验证,避免手工修改 vendor。415 收藏 -
Go embed pattern 无匹配文件时,先按源码包目录定位资源,再恢复编译前的真实产物。结合包内目录示例说明空目录、隐藏文件、上级路径与构建流水线的修复取舍。156 收藏 -
Go build tags 未选中目标文件时,先用 go list 看文件分类,再检查 //go:build 位置和布尔表达式,最后核对 GOOS、GOARCH、cgo 与 -tags。本文给出一套从现象到修复的排查顺序。488 收藏 -
Go 交叉编译时把 CGO_ENABLED 改成 1 还不够。本文按目标三元组、CC/CXX、头文件与 sysroot、pkg-config 和链接阶段给出一套工具链排查顺序。258 收藏 -
Go compress/flate 的 Write 只接收输入,Writer.Close 才负责把待处理数据和压缩流结尾写入底层 Writer。本文区分 Flush、Close、Reset 的职责,说明底层写入错误如何传回,以及流式压缩在文件、内存和网络场景中的收尾方式。208 收藏