Go教程技术文章
-
Go encoding/csv.Reader 默认会校验记录列数。本文说明 FieldsPerRecord 的正数、零值和负值模式,并用表头映射短行,在业务层记录缺失字段,同时区分列数差异与真正的 CSV 解析错误。166 收藏 -
使用 Go strings.CutSuffix 精确移除末尾一份可选后缀,保留中间内容,并区分 found、空后缀、重复后缀、大小写与旧版本兼容写法。165 收藏 -
Go netip.Prefix.IsSingleIP 用来判断一个 CIDR 前缀是否只包含一个 IP。本文结合 IPv4、IPv6、PrefixFrom、IsValid 和 Masked,说明如何把单地址判断接入路由与访问控制,并避开未掩码地址位和非法前缀的误区。165 收藏 -
介绍 Go opentype.ParseCollection 读取 TTC、OTC 及单字体文件的方法,说明字体索引选择、错误处理与底层数据寿命,并区分字体解析和绘制配置。165 收藏 -
Go testing/synctest 可以在隔离测试气泡内使用虚拟时钟,让定时任务测试不必等待真实秒数。本文用 time.AfterFunc 示例比较真实时间、注入时钟和 synctest,并说明 Test、Wait、Sleep 的边界。165 收藏 -
Go slices.Collect 可以把 iter.Seq 产出的值收集成新的切片,适合后续索引、排序或重复遍历。本文用可复用的偶数迭代器说明 Go 1.23 及以上版本的最小用法,并解释 nil 空结果、引用型元素的浅拷贝以及何时应继续流式消费。165 收藏 -
本文说明 Go crypto/subtle.ConstantTimeByteEq 的 uint8 参数、1/0 返回值、最小封装,以及它与 ConstantTimeEq 和 ConstantTimeCompare 的适用边界。165 收藏 -
解释 os.ReadFile 的整文件加载边界,并给出基于 os.File、io.Reader 和固定缓冲的流式改法,帮助大文件顺序处理降低峰值内存。165 收藏 -
用 Go 的 json.Decoder 连续读取多个 JSON 对象,区分 io.EOF 正常结束与格式、类型错误,并给出文件和 HTTP Reader 的接入写法。164 收藏 -
用一次 os.OpenRoot 复用目录根对象,逐个读取直接子文件并及时关闭,结合有界读取、逐项错误与根关闭错误,说明多文件批处理的资源归属和恢复边界。164 收藏 -
Go 中应用 JSON Patch 的关键是先用 DecodePatch 解析 RFC 6902 操作数组,再用 Apply 或 ApplyWithOptions 作用到原始 JSON 文档,并明确缺失路径、copy 扩张和业务校验的边界。164 收藏 -
Go time.Time.AddDate 按日历字段移动日期,不等于固定增加若干小时。本文解释跨月归一化、Location 与夏令时造成的时长差异,并给出 Add 与 AddDate 的选择边界和回归检查思路。164 收藏 -
用%w保留Go crypto/aes初始化错误,通过errors.As识别KeySizeError,区分调用阶段,并设计不泄露密钥的内部诊断和对外提示。164 收藏 -
Go 反射读取 Int 前,先用 reflect.Value.CanInt 判断值是否支持安全读取,并厘清 Elem、CanUint、CanConvert 与 Convert 的边界。164 收藏 -
Go读取ZIP的UTF-8声明应检查Flags第11位,文件名字节合法性与NonUTF8则需分别理解。本文提供只读观察程序,并解释ASCII、中文名称、注释和写入标志的差异。163 收藏