Go教程技术文章
-
Go 1.27 新增标准库 uuid 包。本文用 NewV7、Parse、Compare 和 String 拆开时间排序、格式兼容、非法输入与零值边界,给出可运行的请求标识示例。251 收藏 -
Go 1.23 的 maps.Keys 返回 iter.Seq,遍历顺序仍不保证稳定。本文从 for range 与 maps.Keys 的关系出发,演示如何用 slices.Sorted 得到可复现的键序列,并说明排序成本与兼容边界。251 收藏 -
讲清 Go compress/gzip.Header.Name 的设置时机、Writer.Close 和 Reader.Name 的读取方式,并区分 gzip 内部文件名与磁盘路径、下载文件名。251 收藏 -
bytes.Reader 的 Len 返回当前未读字节数,Size 返回底层字节切片的原始长度。本文用 Read、ReadAt、Seek 和 Reset 对比两者的变化,帮助你在读取循环和原始载荷统计中选对 API。251 收藏 -
围绕 Go testing.T.TempDir 讲清并行子测试的目录隔离、父测试共享只读夹具、自动清理和 GOTMPDIR 排查边界。251 收藏 -
配置文件写入成功并不等于断电后一定保留。本文用 Go 的临时文件、os.File.Sync、os.Rename 和目录同步串起安全替换流程,解释每一步解决什么问题,以及如何用重启和故障注入思路核对结果。250 收藏 -
用 Go 检查外部命令启动时会继承哪些环境变量,演示 Cmd.Environ、Cmd.Env 与 LookPath 如何配合,让本地和生产环境的启动条件更容易复现。250 收藏 -
用 Go 的 net/netip 解析 CIDR 配置并校验客户端地址,重点看 Prefix.Contains 的地址族边界、ParsePrefix 错误处理与 PrefixFrom 的掩码差异。250 收藏 -
自定义集合不必暴露内部切片或 map,也能直接支持 for range。做法是让 All 方法返回 iter.Seq[T],在闭包里调用 yield,并把 false 当作停止信号。本文用一个泛型集合说明接口形状、提前 break 和重复遍历的边界。250 收藏 -
讲清 Go slices.SortStableFunc 按团队、优先级等多个字段排序时的稳定比较器写法,说明比较结果、降序参数、等价元素和常见溢出误区。250 收藏 -
用 Go 的 io.Pipe 把数据生产、gzip 压缩和 HTTP 请求体串成流,讲清同步背压、错误传播、取消处理以及 Content-Length 和重试边界。249 收藏 -
sync.OnceFunc 的 panic 不是一次性失败后自动重试,而是被缓存并在后续调用中用同一个值再次 panic。本文拆解实现状态、栈信息差异和可重试初始化的替代写法。249 收藏 -
bytes.Reader 读到 EOF 后不会自动回到开头。本文用 Seek 重置读取游标,并比较 Seek、ReadAt、Reset 的参数语义、错误边界和适用场景。249 收藏 -
Go os/exec 启动命令后,相对路径默认跟随子进程工作目录。本文用 Cmd.Dir 设置独立目录,并区分目录不存在、命令失败和结果文件落点错误等常见问题。249 收藏 -
用 Go net/url.URL.JoinPath 处理接口基础地址与资源路径的拼接,说明重复斜杠、绝对路径片段、查询参数和转义边界,给出可测试的请求地址写法。248 收藏