Go语言技术文章
-
Go 1.27 的 go fix atomictypes 可以把 sync/atomic 原始函数迁移为强类型原子包装器。本文从预览命令、访问边界、版本前提和人工复查说明这项现代化应该怎样安全落地。492 收藏 -
Go x/text/width 提供的是 Unicode 宽度属性分类,不是字体渲染后的屏幕像素测量。本文区分 width.Kind、rune、UTF-8 字节数和布局引擎,并给出按目标选择 API 的排查方法。492 收藏 -
Go errors.Join 可以把多个校验错误合并成一个返回值,同时保留 errors.Is 和 errors.As 的判断能力。本文从一个批量配置校验器出发,说明 nil 过滤、哨兵错误、自定义错误类型和错误展示之间的边界。492 收藏 -
Go go-colorful 怎样生成具有区分度的配色集合:比较 SoftPalette、FastHappyPalette 和 SoftPaletteEx 的适用场景、错误处理与回退方式。492 收藏 -
Go 1.27 允许结构体字面量直接使用有效的 promoted field selector 初始化非指针嵌入字段。本文用最小示例说明版本、指针嵌入、字段遮蔽和混用键的边界。491 收藏 -
Go hash/fnv.New32a 适合为字符串或字节流生成稳定的 32 位非加密哈希。本文从最小写法出发,说明 Write、Sum32、Sum 的区别,演示分片输入,并划清 FNV-1a 与密码学哈希的使用边界。491 收藏 -
regexp.FindReaderIndex 返回的是 UTF-8 字节偏移,不是字符序号。本文解释中文文本中的位置差异,并给出保留原文后把字节区间换算为 rune 位置的方法。491 收藏 -
Go ksuid 解析 KSUID 后,Time() 适合得到可读的生成时间,Timestamp() 保留特殊纪元下的原始整数。本文说明两者的区别、错误处理和排序边界。491 收藏 -
Go text/template 可通过 FuncMap 注册返回值与 error 的函数。本文结合状态报告示例说明注册顺序、Execute 错误链、缓冲输出和兼容处理,避免把半成品报告交付给调用方。490 收藏 -
RuneError 不能单独代表解码失败:DecodeRuneInString 返回 RuneError 且 size 为 1 时,才表示非空输入的 UTF-8 编码非法;合法的 U+FFFD 通常占 3 个字节,空字符串则返回 size 为 0。490 收藏 -
Go riff.Next 返回的块 Reader 会在下一次 Next 后失效。本文解释共享读取状态,给出带单块、总量和数量预算的数据复制函数,并说明并发与 LIST 嵌套读取的边界。490 收藏 -
Doublestar 默认会把静态前缀不存在视为无匹配结果。本文区分空结果、ErrBadPattern、ErrPatternNotExist 与普通 I/O 错误,并给出 WithFailOnPatternNotExist 的迁移写法。490 收藏 -
Go race 没有报告某次数据竞争,并不等于代码绝对安全。本文从运行路径、并发时序、race 构建和 !race 文件四个方面拆解漏报原因,并给出一份可复查的测试覆盖清单。488 收藏 -
Go build tags 未选中目标文件时,先用 go list 看文件分类,再检查 //go:build 位置和布尔表达式,最后核对 GOOS、GOARCH、cgo 与 -tags。本文给出一套从现象到修复的排查顺序。488 收藏 -
Go math/bits.OnesCount64 接收 uint64 并返回其中 1 bit 的数量。本文用位掩码示例说明调用方式、返回值和零值、全 1 值及输入类型选择。488 收藏