Go语言技术文章
-
使用 Go jsonschema/v5 处理内存中的多份 JSON Schema 时,关键是用同一个 Compiler 以不带 fragment 的资源名注册主 Schema 和被 $ref 引用的 Schema,再从根资源 Compile。本文给出最小写法、路径匹配规则、动态内容变体和常见错误边界。337 收藏 -
Go roaring 的 Rank 用于统计小于等于目标值的元素数量,Select 用于按 0 起始序号取出有序集合中的元素。本文用 Go 示例说明两者的下标约定、分页用途和空集合、越界、并发访问边界。337 收藏 -
Go 1.23 的 slices.Chunk 返回的是源切片的连续子切片视图:直接改元素会影响原切片,但每个分块的容量被限制为长度,append 不会沿用这段容量改写源数据。需要独立分块时使用 slices.Clone。337 收藏 -
Go encoding/xml 默认按严格 XML 解析。本文用 xml.Decoder 的 Strict、AutoClose、HTMLAutoClose 和 HTMLEntity 处理缺少结束标签的 HTML 风格片段,并说明适用边界。337 收藏 -
用 Go encoding/hex.EncodedLen 计算十六进制输出的精确长度,配合 Encode 复用目标切片,并比较 AppendEncode 与流式编码在不同缓冲区场景下的选择。337 收藏 -
Go debug/dwarf.Reader 按条目读取 DWARF 调试信息。本文说明怎样用 Next 判断条目边界,用 Tag 筛选目标,并在不需要子树时调用 SkipChildren 跳过无关内容。337 收藏 -
Go bufio.Reader 在成功 ReadRune 后可用 UnreadRune 回退一个码点。本文以数字串试探解析为例,说明同一 Reader、Peek 失效、重复回退、EOF 与非法 UTF-8 的处理边界。336 收藏 -
Go 使用 unixgram 接收本地数据报时,每次读取对应一个独立报文,但缓冲区太小会让消息内容被截断。本文用 ReadFromUnix 和 ReadMsgUnix 说明怎样保留边界、识别风险并选择合适的读取方式。336 收藏 -
Go 的 atomic.Int64 可以用零值记录可正可负的并发偏移量。本文从 Add、Load、Store、Swap 和 CompareAndSwap 的调用方语义出发,说明如何做增减、重置、条件更新,以及首次使用后不可复制和只保护单个整数等边界。336 收藏 -
Go 1.27 为 go tool compile 增加 response file 支持。本文用一个具体编译场景说明如何用 @file 传递参数、处理引号与路径,并划清它和 go build 的边界。336 收藏 -
Go x/text/unicode/norm 的 NFKC 会先做兼容分解,再做规范组合,因此全角、带圈数字、上标和连字等字符可能改变外观。本文说明变化原因、Go 写法与不应使用 NFKC 的语义边界。336 收藏 -
围绕 os.UserCacheDir 讲清 Unix、macOS、Windows 和 Plan 9 的用户缓存根目录规则,以及 XDG_CACHE_HOME 错误边界、应用子目录创建和缓存读写处理。336 收藏 -
Go crypto/ecdh 的 ECDH 曲线不匹配,通常是本地私钥与远端公钥使用了不同 Curve。本文区分 NewPublicKey 解析错误和 ECDH 曲线错误,给出统一曲线、接收公钥和生产排查清单。336 收藏 -
本文用 Go debug/elf 读取 ELF 节区的 SectionHeader.Flags,通过 SHF_EXECINSTR 判断节区是否包含指令,并区分缺失节区、非 ELF 输入和其它标志组合。336 收藏 -
Go encoding/base32 的 NoPadding 会去掉 RFC 4648 的等号。本文按跨系统交接场景说明如何判断无填充长度、恢复等号、选择解码器,并把兼容逻辑放在协议边界。336 收藏