Go语言技术文章
-
Go 的 time.LoadLocation 找不到 IANA 时区数据时,不应静默继续。本文说明时区数据来源、容器部署处理,以及 UTC、固定偏移和直接失败三种明确降级策略。467 收藏 -
Go 的 regexp.Regexp.SubexpIndex 可以把命名捕获组转换为 FindStringSubmatch 返回值中的稳定位置。本文说明索引映射、不存在与未匹配的区别、重复命名规则,以及如何封装安全读取逻辑。359 收藏 -
Go 的 time.Time.AppendFormat 会把格式化结果直接追加到已有 []byte 并返回扩展后的切片。本文用日志字段示例说明返回值、容量复用、Format 对比以及布局和时区的使用边界。459 收藏 -
说明 Go time.Time 的 Round 与 Truncate 如何按固定周期取整并保留 Location,结合固定偏移示例区分绝对网格、本地整点、日历一天及单调时钟注意点。215 收藏 -
用 Go regexp.FindAllIndex 获取每次匹配的半开字节区间,理解 n 参数、中文 UTF-8 下标,以及整体匹配和捕获组索引的区别。326 收藏 -
Go regexp 默认采用左优先匹配;如果同一起点有多个候选并希望优先拿到更长结果,可以在共享使用前调用 Regexp.Longest。本文用最小示例对比默认模式、Longest 与 CompilePOSIX 的边界。233 收藏 -
Go 的 strings.FieldsFunc 适合按自定义 rune 规则切分文本。本文用字段导入场景说明它如何处理连续分隔符、首尾分隔符、Unicode 字符与空字段,并给出与 Split、FieldsFuncSeq 的选择边界。362 收藏 -
使用 Go strings.CutSuffix 精确移除末尾一份可选后缀,保留中间内容,并区分 found、空后缀、重复后缀、大小写与旧版本兼容写法。165 收藏 -
用 strings.CutPrefix 一次完成可选前缀的判断与去除,讲清命中、未命中、空前缀和旧写法迁移时的返回值,附可直接改造的 Go 示例。490 收藏 -
Go 中需要把 []byte 交给异步任务、缓存或跨层接口时,bytes.Clone 可以复制有效数据并隔离底层数组。本文比较旧写法与新写法,并说明 nil、空切片、容量和回归测试的边界。407 收藏 -
bytes.Buffer 的可用空间要看 Available,而不是只看 Cap。本文结合 Len、Cap、Available 和 Grow,说明如何估算当前缓冲区的剩余容量,以及读取、复用和扩容时的实际边界。474 收藏 -
用 io.LimitReader、max+1 探测和 http.MaxBytesReader 为 Go ReadAll 设置输入大小上限,区分截断、超限和读取错误。412 收藏 -
用 ReadFull 和 LimitedReader 读取固定长度协议载荷,区分读取上限、读满判断与提前 EOF,说明流式写入错误、缓冲Reader和后续帧边界。261 收藏 -
Go 的 io.MultiWriter 可以把一次 Write 同步转发给多个 io.Writer。本文说明它的调用顺序、错误和短写传播方式,并给出把输出同时写入文件与内存缓冲区的实用写法。181 收藏 -
Go 的 io.TeeReader 可以在读取输入流的同时,把已经读到的字节同步写入另一个 io.Writer。本文用 bytes.Buffer 和 io.Copy 说明它的调用关系、无缓冲特性、错误传播方式,以及只复制实际消费数据时的边界。175 收藏