Go教程技术文章
-
Go 遍历目录树时,可在 filepath.WalkDir 回调中识别 fs.ErrPermission:对子目录返回 fs.SkipDir 继续扫描其他分支,根目录不可访问则直接失败;常规文件再用 os.Open 做本次可读性确认,并汇总数量、字节数和有限错误样本。325 收藏 -
Go 服务处理外部输入时,不能只校验 JSON 格式。本文给出请求体长度、字段格式与时间、并发资源预算三层限制的最小写法、错误映射和复查清单。325 收藏 -
Go 用 os/exec 启动外部命令时,Cmd.Dir 可以固定子进程的工作目录,让命令稳定解析相对配置、输入和输出路径。本文从路径归属、相对可执行文件、Env/PWD 和启动错误几个证据入手,给出可直接改造的写法。325 收藏 -
Go 1.26 的 crypto/hpke 同时提供一次性 Seal/Open 与有状态 Sender/Recipient。本文用连续消息流程说明 enc、info、AAD、nonce 计数器和消息顺序的复用边界,帮助你选对上下文生命周期。325 收藏 -
Go filepath.Rel 用基准路径和目标路径计算操作系统相关的相对路径。本文说明参数顺序、子目录与返回上级、相对输入和不同路径卷的错误边界,并给出可复用的封装。325 收藏 -
Go slices.Clip 会把切片容量收紧到长度,降低接收方 append 改写原底层数组的风险;本文用标签快照示例说明 Clip、Clone 与真正数据隔离的边界。324 收藏 -
Go Lip Gloss 里可以用一个基础 Style 保存颜色、边框和间距,再用 Inherit 让标题、正文和警告样式只补齐未设置的规则。本文对比赋值复制与继承的区别,给出 v2 写法、旧代码风险和回归检查清单。324 收藏 -
Go 基准测试中,如果目标函数的返回值完全没有用途,编译器可能把无副作用计算删掉。Go 1.24+ 优先使用精确的 b.Loop() 循环;兼容旧式 b.N 时用包级结果汇总变量保住被测结果,并把初始化和计时边界分开。324 收藏 -
用 Go net.LookupSRV 读取 SRV 服务发现记录,拆解 service、proto、cname、Target、Port、Priority、Weight 的关系,并说明如何安全组合拨号地址。324 收藏 -
用 Go crypto/rand 生成固定长度随机字节,再以 RawURLEncoding 转成 URL 安全令牌;同时说明 TTL、一次性消费和 Go 1.24 rand.Text 的适用边界。323 收藏 -
说明 Go crypto/subtle.XORBytes 处理等长 []byte 的调用方式,解释返回值、目标长度、切片重叠和不等长输入的边界,并给出生产代码中的长度检查方案。323 收藏 -
Go 的 netip.AddrPort 用结构化 IP 与 uint16 端口保存地址,IPv6 文本则统一采用 [地址]:端口。本文说明 AddrPortFrom、ParseAddrPort、String、zone 和端口边界,避免日志与连接参数产生歧义。323 收藏 -
Go sqlmock 的动态时间参数不适合做精确值比较。本文实现 Argument 匹配器,只约束 time.Time 类型,同时保留 SQL 和固定参数的精确断言。323 收藏 -
Go HTTP Server 默认开启 Keep-Alive。本文用 SetKeepAlivesEnabled(false) 关闭服务端连接复用,并解释 HTTP/1 空闲连接、HTTP/2 边界、优雅停机与客户端 Transport 配置的区别。323 收藏 -
Go slices.Values 提供按顺序产出元素值的迭代器。本文结合完整示例说明版本要求、break、重复遍历与共享切片边界,并给出普通 range 的回退取舍。323 收藏