Go语言技术文章
-
Go 子切片不会复制底层数组,小窗口长期存活也可能保留大缓冲区。通过缓存示例说明 make 加 copy 的修复位置,区分 Clip、容量限制、浅拷贝以及 GC 与进程内存的观察边界。201 收藏 -
Go bytes.TrimSpace 会按 Unicode 空白规则去掉字节切片首尾的空白,并保留中间内容。本文说明最小写法、空结果、返回子切片的共享存储边界,以及与 bytes.Trim 等函数的选择。201 收藏 -
Go bufio.Scanner 结果不稳定时,应分别检查临时缓冲复用、扫描错误、分词规则与异步顺序。通过有界串行示例说明 Text 快照、整批失败策略和数据交接边界。201 收藏 -
Go os.Args 判断缺少命令参数时,应先检查 len(os.Args) 是否小于所需参数数量,再访问对应下标。本文说明程序名与位置参数的关系,区分缺少参数和空字符串,并介绍何时交给 flag 解析选项。200 收藏 -
go work sync 面对的是工作区构建列表,不是任意单模块整理命令。本文用 go.work、GOWORK、use 模块和最小版本选择说明它何时会改写 go.mod,以及没有变化时该检查什么。198 收藏 -
在 Go 中反复把字节编码为十六进制文本时,可以用 hex.EncodedLen 计算容量,再用 hex.Encode 或 hex.AppendEncode 复用目标缓冲区。本文说明 len、cap、dst[:0] 和多段追加的正确关系。198 收藏 -
Go 数据库连接池空闲连接断开,可能来自 sql.DB 主动回收,也可能是数据库、代理或 NAT 的空闲超时。本文按时间线区分原因,说明连接池参数职责,并给出带边界的排查与配置方案。198 收藏 -
区分Go pprof中的CPU样本、采集窗口与业务墙钟时间,通过原创采集示例理解flat、cum和百分比分母,说明等待与并行如何影响读数,以及何时补充trace或业务计时。197 收藏 -
Go 1.26 为 testing.T 增加 ArtifactDir:用它取得当前测试或子测试独立的产物目录,把失败现场写入其中;配合 -artifacts 和 -outputdir,本地与 CI 都能保留测试文件。196 收藏 -
Go 32 位平台使用 64 位原子计数器时,普通 uint64 与 atomic.Uint64 的对齐责任不同。本文比较旧式原子函数、类型化原子对象和互斥锁的适用边界,给出结构体布局与兼容检查清单。195 收藏 -
比较Go database/sql结果集的自动关闭、defer和显式关闭,区分QueryContext、Scan、Err、Close的错误入口,用完整读取函数处理早退、迭代失败和关闭错误。195 收藏 -
filepath.Rel 只按路径字符串计算相对关系,不会替你解析符号链接。本文用 Go 标准库演示先统一解析根目录与目标路径,再计算相对路径,并拆开解析失败、路径不兼容和目标尚不存在等边界。193 收藏 -
调用方先准备递增有序的切片,把同一份缓冲区反复传给 slices.BinarySearch;文章说明如何区分命中索引、未命中插入位置和结果容器分配。193 收藏 -
Go crypto/ecdh.NewPublicKey 会按指定曲线校验公钥字节并返回 PublicKey。本文说明 NIST 曲线与 X25519 的编码边界、解析错误处理,以及如何在 ECDH 前保证本地私钥和对端公钥使用同一条曲线。192 收藏 -
Go sort.Find 用二分查找返回有序数据中第一个满足比较条件的位置,并通过 found 区分是否精确命中。本文从三态比较函数、重复值、未找到边界和结构体切片几个场景说明怎样写对。187 收藏