Go教程技术文章
-
Go 的 archive/zip 会把 ZIP 条目的外部属性保存在 FileHeader.ExternalAttrs 中,但这个 uint32 的含义取决于 CreatorVersion。本文用读取示例说明如何保存原始字段、调用 Mode() 转为 fs.FileMode,并处理平台、目录和符号链接边界。460 收藏 -
用 Go 标准库 net/mail.ParseAddressList 解析多个收件人,分别读取 Name 与 Address,并用数量、字段和错误三个指标判断地址列表是否可继续进入业务流程。465 收藏 -
Go 的 net/url.URL.Redacted 只会把 URL.User 中的密码替换为 xxxxx。本文说明如何区分 Userinfo 与查询参数,把脱敏固定到日志出口,并处理解析失败、无密码和 token 参数等边界。354 收藏 -
在 Go 中用 crypto/rand.Read 生成固定长度的加密安全随机字节,说明切片长度、十六进制与 Base64 编码、错误边界,以及它和 math/rand 的使用区别。443 收藏 -
Go net.Dialer 用 Timeout 与 DialContext 限制建连等待,多个截止点取较早者;示例解释父级取消、连接关闭,以及 TLS 和读写超时的独立边界。151 收藏 -
Go 中限制最低 TLS 版本,直接给 tls.Config.MinVersion 设置 tls.VersionTLS12 或 tls.VersionTLS13。本文说明默认行为、客户端与服务端写法、版本范围边界,以及如何通过 ConnectionState 读取实际协商版本。197 收藏 -
Go plugin 并不是可随意替换的跨版本动态模块。本文拆解工具链、构建参数、公共依赖和平台边界,并给出同环境构建与 RPC 解耦的选择方法。426 收藏 -
Go 中不要直接比较 IP 字符串:先用 netip.ParseAddr 转成 Addr,再按任务选择 ==、Compare 或 Less;本文还说明 IPv4-mapped IPv6、IPv6 zone、零值、map key 与输入校验边界。157 收藏 -
fmt.Sscanf 适合解析结构稳定的字符串:用格式模板约束字段位置,用指针接收值,再同时检查扫描数量和 error。普通动词会按扫描规则处理空白,%c 则直接读取下一个字符。493 收藏 -
Go errors.Join 遍历需同时识别两种 Unwrap 接口,区分包装节点与叶原因;示例加入调用、深度额度,并说明截断记录和不可信方法边界。262 收藏 -
Go 给错误添加上下文时,用 fmt.Errorf 的 %w 保留哨兵错误,再用 errors.Is 沿包装链或错误树匹配目标;不要依赖错误文本,也不要把 errors.Is 和 errors.As 混用。191 收藏 -
Go select 可以把结果 channel 与 ctx.Done() 放在同一个等待边界里:结果先到就返回结果,超时或上游取消先到就停止等待。本文说明实现模式、竞态边界和资源清理。251 收藏 -
Go 的 Write 成功只表示数据已经交给文件对象,File.Sync 才负责把当前文件内容提交到稳定存储。本文用临时文件替换配置的完整顺序说明 Sync、Close、Rename 和目录项持久化的边界。150 收藏 -
用 Go 的 debug/elf.File.Symbols 读取 ELF 普通符号表,处理 elf.ErrNoSymbols,并区分 Symbols 与 DynamicSymbols 的使用边界。203 收藏 -
sync.Pool 只能复用临时对象,不能替请求保存状态。通过明确 Get、使用、Put 的所有权边界,在归还前清空请求标识、错误和缓冲引用,并用指标区分池命中与状态泄漏。365 收藏