Go语言技术文章
-
os.Rename 不是跨文件系统复制器:源文件和目标文件位于不同挂载或卷时,底层 rename 不能一次完成目录项变更。本文说明如何识别这类错误,并用目标目录内的临时文件实现可控的复制后删除。187 收藏 -
讲解 JSON Pointer 对斜杠及波浪线的编码,通过完整 Go JSONPatch 示例区分单个成员和嵌套路径,并说明逐段构造、JSON 字符串编码与补丁错误处理。187 收藏 -
Go beep Streamer返回false只表示耗尽,正常读完和读取失败都可能进入该状态。本文说明n、ok与Err的分工,给出原创同步消费示例,并解释组合器错误传播、主动停止和资源关闭的区别。187 收藏 -
Go sort.Find 用二分查找返回有序数据中第一个满足比较条件的位置,并通过 found 区分是否精确命中。本文从三态比较函数、重复值、未找到边界和结构体切片几个场景说明怎样写对。187 收藏 -
在 Go 的 io/fs 接口前判断路径是否合规,重点说明 ValidPath 对 slash 分隔、未根路径、点段、空元素和根目录 . 的边界,并给出可直接复用的入口函数。187 收藏 -
context.Cause只读取取消原因,不会关闭资源或等待协程退出。文章区分取消信号、阻塞点、资源所有权和结束确认,并用文件导出示例说明如何安排cancel、Close与返回结果。187 收藏 -
maps.EqualFunc 先比较两个 map 的长度,再按键查找并调用自定义值比较函数,所以 nil map 与空 map 都因长度为 0 而返回 true。本文拆解源码规则,给出最小示例,并说明如何在业务上区分 nil 与空。187 收藏 -
判断 Go os.File.WriteAt 是否完整,不能只看 err。应同时比较 n 与 len(p),区分完整写入、部分写入和异常,并保留底层错误;本文给出可复用的固定偏移写入判断函数。187 收藏 -
Go TypeAndValue.Addressable 可识别表达式的可寻址属性。本文用变量、切片索引和 map 索引示例说明 Types 的读取方法,并区分可赋值、复合字面量例外及运行时安全。187 收藏 -
Go 静态分析里,TypeAndValue.IsNil 判断的是当前 AST 表达式是否指向预声明 nil,而不是运行时指针是否为空。本文用 types.Info.Types 拆解 nil、(*int)(nil) 和 p == nil 的节点边界,并说明 Type、Value 与 IsNil 的分工。187 收藏 -
Go types.Package.Path 表示包路径,Name 表示声明名,两者不能互相替代。本文从同名包索引覆盖场景出发,用示例区分本地导入别名,并说明代码生成与缓存的处理边界。187 收藏 -
Go mutex profile 默认不采样,先用 runtime.SetMutexProfileFraction 开启,再通过 pprof 的 mutex 数据定位锁竞争热点。本文解释采样比例、采集方式和栈信息判读,避免把 Lock 调用误当成唯一根因。186 收藏 -
Go 的 json.Decoder.Token 返回的是 JSON 词法 token,Delim 负责标出数组和对象边界,More 只用于判断当前容器是否还有元素。本文从 Token 看似错位的现象出发,说明如何用 Token、More 与 Decode 组合读取 JSON 流。186 收藏 -
Golang · Go问答 | 3星期前 | 标准库 · 错误处理 · go · 数据库 · Go database/sql sql.ErrNoRows QueryRow QueryRowContext
QueryRow 找不到记录并不是 QueryRow 立即报错,而是把错误延迟到 Scan。本文说明 sql.ErrNoRows 的来源,比较 QueryRow 与 Query 的适用场景,并给出仓储层错误转换和边界处理方式。186 收藏 -
Go genetlink 不需要手写 Generic Netlink 家族编号。先用 genetlink.Dial 建立连接,再调用 GetFamily 按名称查询 Family,读取 Family.ID;本文同时说明错误判断、版本字段与 Execute 的衔接方式。186 收藏