Go语言技术文章
-
Go regexp.FindReaderIndex 接收 io.RuneReader,返回首个匹配在输入中的字节起止下标。本文说明如何处理 nil、UTF-8 字节范围、Reader 的超前读取,以及它与 FindIndex、MatchReader 的选择边界。105 收藏 -
讲清 Go regexp.ExpandString 如何消费 FindSubmatchIndex 的匹配区间,用命名捕获组生成替换文本,并处理模板歧义、未匹配组和追加缓冲区。200 收藏 -
Go 反射读取无符号整数时,直接调用 Value.Uint 可能因 Kind 不匹配而 panic。本文用 CanUint 作为读取前的保护,说明无效 Value、Interface 包装、可读取 Kind 和 uint64 返回值的边界。293 收藏 -
Go 的工具链版本不能直接按普通字符串比较。本文用 go/version.Compare 判断 go1.27、go1.27rc1 和 go1.27.0 的先后,并说明 go 前缀、非法输入、Lang 归一化和最低版本检查的边界。132 收藏 -
Go 反射中的 CanConvert 用来判断 Value.Convert 是否会因转换规则触发 panic。本文从 Go 1.17 的迁移场景出发,说明基础类型、命名类型、切片转数组的长度边界,以及为什么可转换不等于数值无损。435 收藏 -
Golang · Go教程 | 5天前 | 反射 · reflect · 标准库 · Go教程 · Go 反射 MapIter MapRange reflect.Value.SetIterValue map迭代
Go 反射遍历 map 时,可以用 reflect.Value.SetIterValue 把 MapIter 当前条目的值写入一个可写 Value。本文从目标 Value 的创建、MapRange 遍历到可赋值与 CanSet 边界,给出完整示例和选择建议。402 收藏 -
Go cmp.Or 适合把多个同类型候选值按优先级取第一个非零值,常用于命令行、环境变量和默认配置回退。本文说明它的用法、零值边界,以及为什么它不是字段级配置合并器。467 收藏 -
Go maps.Clone 可以复制一个新的 map 容器,修改标量值不会影响原 map,但它是浅复制,切片和指针等值内部仍可能共享。本文用故障复盘方式说明复制、验证和边界处理。103 收藏 -
Go netip.Addr.As16 会把 IPv4、IPv6 地址统一转换为 [16]byte。本文说明 IPv4 映射形式、IPv6 区域标识、零值 Addr,以及什么时候应该改用 As4 或 Unmap。206 收藏 -
Go slices.BinarySearchFunc可在自定义顺序中查找,前提是排序与查询比较语义一致。通过分数降序的结构体示例,说明整数目标、重复键、未命中插入位置和顺序维护。244 收藏 -
Go maps.All 可以把 map 转成键值迭代器,直接用 range 读取每个键和值。本文说明它的使用方式、无序语义,以及与 maps.Insert、maps.Collect 的组合边界。377 收藏 -
Go 的 fs.FormatDirEntry 可以把 DirEntry 转成适合人阅读的短文本。本文从目录读取、遍历输出和边界判断说明它与 FileInfo 格式化的区别。481 收藏 -
Go slices.Chunk 会把切片按最多 n 个元素分成连续子切片,最后一组不足 n 个时会原样保留,不会补零或丢弃。本文说明尾组、空输入、非法 n 与子切片容量的处理边界。431 收藏 -
Go bytes.Runes 会把 UTF-8 字节切片解释为 Unicode 符文并返回 []rune。本文从基础转换、长度单位、非法 UTF-8 和字符边界几个方面说明如何安全使用。392 收藏 -
Go bytes.Cut 会围绕首个分隔符返回 before、after 和 found 三个结果。本文用请求头、键值文本等场景说明未命中时的返回边界,以及返回切片与原始字节存储共享时何时需要 bytes.Clone。210 收藏