Go教程技术文章
-
使用 Go net/netip 的 Prefix 与 Contains 判断客户端 IP 是否属于指定网段,覆盖解析、双栈地址族、无效地址和 IPv6 zone 等边界。492 收藏 -
maps.Clone 会复制 map 的键和值,因此 map[string]error 中的错误值、Error 文本和错误链入口都会保留;但它是浅拷贝,不会复制错误对象内部的指针、切片或自定义可变状态。492 收藏 -
通过 bufio.Reader.Peek 直接查看 Reader 内部缓冲区中的前缀,避免为短暂判断创建副本;同时讲清 Reset 复用 Reader、短读错误、ErrBufferFull 与返回切片的生命周期。492 收藏 -
Go go-colorful 怎样生成具有区分度的配色集合:比较 SoftPalette、FastHappyPalette 和 SoftPaletteEx 的适用场景、错误处理与回退方式。492 收藏 -
Go errors.Join 可以把多个校验错误合并成一个返回值,同时保留 errors.Is 和 errors.As 的判断能力。本文从一个批量配置校验器出发,说明 nil 过滤、哨兵错误、自定义错误类型和错误展示之间的边界。492 收藏 -
Go 1.27 的 go fix atomictypes 可以把 sync/atomic 原始函数迁移为强类型原子包装器。本文从预览命令、访问边界、版本前提和人工复查说明这项现代化应该怎样安全落地。492 收藏 -
通过 money 模块与 order 服务的小项目,演示如何拆分 Go 内部模块、用 go.work 本地联调、为子目录模块创建语义化版本标签,并用 v1 兼容规则与 /v2 路径维护清晰依赖边界。492 收藏 -
Golang · Go教程 | 1个月前 | channel · Context · Go教程 · Channel关闭 context取消 发送方关闭 Go数据管道 Go pipeline 多阶段并发
本文实现一个源阶段、转换阶段、过滤阶段和汇聚端组成的 Go 数据管道。每个阶段创建、发送并关闭自己的输出 Channel,下游只接收;同时用 context 处理提前结束,并说明多 worker 阶段如何等待全部发送完成后单点关闭。492 收藏 -
Go compress/flate 的 Write 可能暂存在压缩器内部,实时传输要在消息写入后调用 Flush,把当前数据和同步标记推到底层 writer;Close 只负责最终收尾。本文用长度帧、io.Pipe 和 io.ReadFull 说明发送、接收与刷新频率的边界。492 收藏 -
Go strings.CutPrefix 返回 found=false 时,优先检查前缀是否真的位于字符串开头、大小写和空格是否一致,并正确处理未匹配时原字符串会原样返回的规则。492 收藏 -
Go 的 net/url.URL.Redacted 会像 URL.String 一样重组地址,但只把 User 中的密码替换成 xxxxx。本文用可运行示例拆开 String、Redacted、Password 的边界,避免把脱敏字符串误当作请求地址或以为查询参数也会自动隐藏。492 收藏 -
用 Found 区分 bytes.Cut 的分隔符缺失与空字段,附可复用 CutFields 完整示例,说明首次切分、空输入、空分隔符与返回切片共享缓冲区的处理方法。491 收藏 -
Go ksuid 解析 KSUID 后,Time() 适合得到可读的生成时间,Timestamp() 保留特殊纪元下的原始整数。本文说明两者的区别、错误处理和排序边界。491 收藏 -
Go hash/fnv.New32a 适合为字符串或字节流生成稳定的 32 位非加密哈希。本文从最小写法出发,说明 Write、Sum32、Sum 的区别,演示分片输入,并划清 FNV-1a 与密码学哈希的使用边界。491 收藏 -
Go 1.27 允许结构体字面量直接使用有效的 promoted field selector 初始化非指针嵌入字段。本文用最小示例说明版本、指针嵌入、字段遮蔽和混用键的边界。491 收藏