Go语言技术文章
-
Go slog 不会自动把 context 中的任意值写成日志字段。本文按请求入口、logger.With、InfoContext 和 Handler 包装四个层次,给出补充 request_id 等上下文字段的安全写法与迁移检查清单。455 收藏 -
Go fmt.Formatter 通过 Format(fmt.State, rune) 接管自定义类型的格式化。本文从最小实现开始,说明怎样读取动词、宽度、精度和标志,并排查递归调用与未知动词问题。388 收藏 -
Go httputil.DumpRequestOut 能把客户端请求按接近线路的形式导出,并包含 Transport 追加的请求头。本文用请求副本和固定字段脱敏,解决调试请求头时泄露 Authorization、Cookie 等敏感值的问题。233 收藏 -
Go 的 debug.FreeOSMemory 会主动触发一次 GC,并尝试把可归还的内存交还给操作系统。本文用 HeapAlloc、HeapReleased 和进程 RSS 区分回收、归还与实际收益,避免把它当成内存泄漏修复器。173 收藏 -
Go泛型可用类型集和底层类型项限制数值参数。通过整数、实数约束与业务计数白名单示例,说明自定义类型接纳、同一类型参数及溢出精度边界。385 收藏 -
Go 泛型可以用 comparable 约束元素、用 map 记录已见值,在不改变输入顺序的情况下完成全局切片去重;元素不可比较时再通过 key 函数提取业务键。269 收藏 -
Go 切片性能优化的关键不是盲目把容量设得很大,而是根据可估算的数据量使用 make 预留容量;本文结合追加、未知数量和基准测试说明 len、cap 与 append 的配合。135 收藏 -
Go map 的 range 顺序没有稳定保证。本文用收集键、排序键、按键取值的方式实现可重复输出,并补充整数键、按值排序、JSON 序列化和测试快照的边界。265 收藏 -
讲清 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教程 | 1星期前 | go · 数据库 · database/sql · Go database/sql Go Rows.NextResultSet Go 多结果集 Go Rows.Err
围绕 database/sql.Rows.NextResultSet 讲清多结果集的切换、每个结果集的扫描顺序,以及 Rows.Err 如何区分正常结束和迭代错误。410 收藏