Go语言技术文章
-
讲清 Go strconv.ParseInt 的 bitSize、ErrRange、ErrSyntax 与 NumError 返回边界,示范如何用 errors.Is、errors.As 和 %w 保留可判断的错误信息。324 收藏 -
Go 工具链遇到 compile、asm 或 vet 找不到、版本不一致时,可以先用 go env GOTOOLDIR 查看当前 go 命令实际使用的编译工具目录。本文区分 GOTOOLDIR、GOROOT、GOBIN 与 PATH,给出本地和 CI 中可复制的只读排查方法。238 收藏 -
Go 中接收方直接关闭数据 channel,会让仍在发送的 goroutine 遇到 send on closed channel panic。本文从关闭语义、channel 所有权、done 停止信号和多生产者协调四步,给出可落地的退出协议。297 收藏 -
Go 项目出现 vendor inconsistent 时,通常是 go.mod、vendor/modules.txt 或 go.work 与 vendor 目录不同步。本文按单模块和 workspace 两种情况给出恢复命令,并解释 replace、显式依赖和 -mod 选择。134 收藏 -
syscall.Exec 不是启动一个子进程,而是把当前进程映像替换成目标程序。本文从 argv、环境数组和成功不返回三个边界出发,给出 Unix 下的最小写法与兼容建议。139 收藏 -
通过运行时指标采样场景讲清描述符发现、Kind 类型分派和直方图读取,说明升级兼容、样本复用及独立快照的处理方法。169 收藏 -
Golang · Go教程 | 2星期前 | go · 数据库 · database/sql · Go database/sql Go Rows.NextResultSet Go 多结果集 Go Rows.Err
围绕 database/sql.Rows.NextResultSet 讲清多结果集的切换、每个结果集的扫描顺序,以及 Rows.Err 如何区分正常结束和迭代错误。410 收藏 -
Go 测试临时目录在 Windows 清理失败,应先排查文件句柄、后台任务退出和 Cleanup 顺序。本文用完整测试示例说明停止与完成信号,明确 TempDir 自动删除的职责边界。226 收藏 -
Go HTTP 客户端连接复用异常时,先检查 resp.Body 是否读到 EOF 并及时关闭,再用 httptrace.GotConn 的 Reused 字段观察 Transport 是否复用了连接。本文给出集中式读取模板、状态码场景和异常边界。282 收藏 -
Go module graph 出现同一模块多个版本时,不能只看 go.mod。本文用 go mod graph 追踪依赖边,再用 MVS、go list -m all、go mod why -m 和 replace、exclude、go.work 边界判断最终 selected version。482 收藏 -
Go 文件没有参与编译时,不要先反复清理缓存。用 go env 和 go list -json 查看当前模块、平台、构建标签以及 GoFiles、IgnoredGoFiles,再按文件名后缀、//go:build 和 -tags 修正文件选择条件。253 收藏 -
Go cgo 构建遇到 undefined symbol 时,先用 go build -x 找到实际链接输入,再按 -L 搜索路径、-l 库名、依赖顺序和 pkg-config 逐项定位。本文只讨论 #cgo LDFLAGS 与链接器输入。441 收藏 -
Go clean -cache 后构建仍像使用旧文件,通常不是缓存没有清干净,而是实际构建输入、模块目录、测试缓存、cgo 外部库或旧二进制路径出了偏差。本文给出一套从 go env、go list 到 -a 和 GODEBUG 的排查顺序。128 收藏 -
go install 带版本后仍调用旧工具,应分开确认版本来源、GOBIN 安装落点与 PATH 命令入口。本文说明同名文件、别名、终端环境和二进制模块信息的排查方法。251 收藏 -
用 slog.Level.UnmarshalText 解析 Go 日志级别配置,区分空值默认、非法值错误和数值偏移,给出可复用的配置加载函数。475 收藏