Go语言技术文章
-
Go 文件关闭、EOF 和缓冲读取属于不同状态。通过直接读取、缓冲层和提前关闭的示例,解释错误差异的来源,并用明确的资源归属与错误链分类修复导入流程。315 收藏 -
os.WriteFile 的 perm 参数只在创建新文件时参与权限设置,覆盖已有文件时会保留原权限。本文从 PathError、父目录、运行身份和只读挂载四层排查 permission denied,并说明何时改用 OpenFile 或显式 Chmod。242 收藏 -
解释 Go os.File.ReadAt 到文件末尾返回部分数据和 io.EOF 的原因,梳理 n、len(b)、off 的判断边界与定长读取处理方式。501 收藏 -
Go bufio.Reader.ReadString 可能同时返回已读文本和 io.EOF。本文用一个按行读取的小工具说明分隔符、尾部数据与错误状态的关系,并给出先处理数据再判断错误的可靠循环。228 收藏 -
Go bufio.Reader.Buffered 返回的是当前缓冲区可以直接读取的字节数,不是底层缓冲区总容量,也不是文件或网络流的剩余长度。本文用 Read、Discard、Reset 对比说明它的实际含义。221 收藏 -
Go json.Decoder.More 只回答当前数组或对象是否还有成员,不是判断流中是否还有下一个 JSON 值。本文用数组、对象和嵌套结构说明 Token、More、Decode 的职责边界。204 收藏 -
Go encoding/csv.Reader.InputOffset 返回当前输入流的字节偏移,正好位于最近读取记录的末尾和下一条记录的开头。本文用逐条读取示例说明如何记录 CSV 行区间、处理多行字段,并把偏移用于断点与错误定位。170 收藏 -
Go copy 允许源和目标切片重叠,但不会扩展目标长度或执行深拷贝。通过队列右移、原地删除和容量对照示例,解释复制数量、清尾、长度归属及共享数据边界。254 收藏 -
Go 的 append 是否修改调用方,关键取决于切片共享的底层数组和剩余 cap。本文拆解 len、cap、返回值、三下标切片与复制边界。471 收藏 -
Go 的 unicode.IsNumber 判断的是 Unicode 数字类别 N,不等于只判断 0 到 9,也不等于能识别所有中文汉字数字。本文对比 IsNumber、IsDigit 与汉字数字的边界,并给出按业务规则筛选 rune 的写法。422 收藏 -
nil map 读取缺失键返回零值,写入却会 panic。以表单状态为例说明 nil 与空 map、写入方法初始化、函数返回新 map 以及嵌套 map 的责任边界。400 收藏 -
Go netip.ParsePrefix 并不会因为 CIDR 地址的主机位非零而拒绝输入。本文从 ParsePrefix 与 Prefix.Masked 的职责边界出发,解释 192.168.1.7/24 的解析结果、真正会触发错误的条件,以及如何在网段存储和 Contains 判断前做规范化。201 收藏 -
解释 Go map 在 range 期间删除和写入的真实边界:单 goroutine 可原地过滤,新增键是否继续遍历不确定,并发读写必须同步。298 收藏 -
Go 的 netip.Addr.String 会保留 IPv6 Zone;真正容易丢失 Zone 的位置通常是 As16、AsSlice、net.IP 转换或 Prefix。本文按字符串化、结构化比较和转换边界说明如何定位问题。317 收藏 -
裸 IPv6 不等于主机加端口。说明 SplitHostPort 的方括号要求,用分字段校验示例正确组装端点,并区分 IP、域名、数字端口和 URL 的输入边界。238 收藏