Go语言技术文章
-
bufio.Scanner 本身不负责关闭底层 Reader。本文用文件读取场景说明资源所有权、defer 释放、Scan 错误检查和长 token 边界,帮助定位文件句柄或连接没有回落的问题。147 收藏 -
Go printer.CommentedNode 不会自动复制整个 AST 文件的注释,它把一个目标节点和指定的 ast.CommentGroup 切片交给 printer.Fprint。本文用一个源码生成场景说明如何筛选注释、复用 FileSet 并处理未选注释与合成节点的边界。147 收藏 -
Go ParseInLocation 可按指定 Location 解释无时区日期。本文给出批量解析示例,说明复用时区、结果预分配、日期转换差异和错误处理边界。147 收藏 -
用 Go debug/elf.NewFile 从 io.ReaderAt 打开 ELF 文件,读取 FileHeader 中的 Class、Data、Machine 和 Type,并给出架构识别、错误处理与资源释放的工程写法。147 收藏 -
Go 中比较客户端 MAC 和服务端期望值时,应先统一为原始字节,再使用 crypto/hmac.Equal。本文从 hmac.New 计算、长度语义、十六进制解码和常见误区四个方面说明签名结果怎样安全比较。147 收藏 -
Go 结构体包含 Mutex 时,值接收者、按值参数与容器操作都可能复制锁。本文通过计数器说明指针传递、容器存指针、noCopy 的作用以及并发计数的判断方法。146 收藏 -
Go 提示 x509 未知机构时,服务端证书链齐全并不等于客户端信任。文章区分链材料与信任锚,定位 RootCAs、容器根库及TLS终止点,提供保留系统根并追加受控CA的专用客户端示例,说明安全修复边界。146 收藏 -
用 Go 的 container/heap 实现优先级任务队列,讲清 heap.Interface、最小堆方向、任务入队出队、优先级更新和空队列边界。146 收藏 -
Go archive/tar.Writer.Flush 不是刷新任意缓冲,而是为已经完整写入的当前文件条目补齐 tar 块填充。本文用两个条目的示例说明 Header.Size、Write、Flush、WriteHeader 与 Close 的关系,以及遗漏字节和底层写入错误的处理边界。146 收藏 -
Go 白名单匹配 IPv4-mapped IPv6 时,直接使用 Is4 或 IPv4 前缀会出现未命中。本文用 netip.ParseAddr、Is4In6 和 Unmap 生成统一比较键,并说明 Prefix.Contains、真正 IPv6、zone 与无效输入的边界。146 收藏 -
Go 文件名平台后缀与构建注释必须同时满足。本文用冲突片段和互补实现说明如何修改文件命名、表达平台并集,并区分目标环境、额外标签及文件选择结果。146 收藏 -
Go 事务 Commit 返回成功后仍读取不到刚写入的数据,通常要先检查提交错误、查询条件、Tx 与 DB 是否混用,以及是否读到了延迟副本。本文按 database/sql 的事务边界给出排查与实现方式。146 收藏 -
用 Go crypto/sha3.New256 复用 SHA3-256 哈希对象,讲清 Write、Sum、Reset 的边界、批量摘要中的清理顺序,以及 sync.Pool 归还对象时怎样避免串状态。146 收藏 -
Go go/types.Config.IgnoreFuncBodies 可以让类型检查器跳过函数体,但不会跳过函数声明、参数和返回值。本文用最小源码分析流程说明它的影响范围、Info 映射的取舍,以及为什么函数体内表达式信息会变得不完整。146 收藏 -
Go constant.Compare 可以直接比较 constant.Value,不需要先转成 float64。本文用 MakeFromLiteral 构造超出 float64 精确范围的大整数,再说明 LSS、EQL、GTR、Unknown 和近似转换的边界。146 收藏