Go语言技术文章
-
Go netip.ParsePrefix 并不会因为 CIDR 地址的主机位非零而拒绝输入。本文从 ParsePrefix 与 Prefix.Masked 的职责边界出发,解释 192.168.1.7/24 的解析结果、真正会触发错误的条件,以及如何在网段存储和 Contains 判断前做规范化。201 收藏 -
Go 处理 Big5 繁体字节时,可以用 x/text/encoding/traditionalchinese.Big5 创建 Decoder 或 Encoder,再配合 Bytes、String、Reader 和 Writer 完成批量或流式转换。本文说明转换方向、错误边界与资源关闭方式。201 收藏 -
Go 中两个 uint32 相乘可能得到 64 位结果,直接用 uint32 相乘只会保留低 32 位。本文结合 math/bits.Mul32 说明 hi、lo 的含义、完整结果的重组方式,以及窄类型乘法最容易出现的误用。201 收藏 -
Merge Patch 对象成员中的 null 按 RFC 7396 表示删除。本文通过 Go 示例区分省略、删除与保留null,说明 JSON Patch 显式操作及数组、顶层值的语义边界。201 收藏 -
Go Gonum distuv 的重复抽样关键在于显式管理 math/rand.Source。本文说明 Normal 如何注入固定 seed、Categorical 如何通过构造函数接收 source、不同分布如何隔离随机序列,以及回放、并发和安全随机的边界。201 收藏 -
Go 子切片不会复制底层数组,小窗口长期存活也可能保留大缓冲区。通过缓存示例说明 make 加 copy 的修复位置,区分 Clip、容量限制、浅拷贝以及 GC 与进程内存的观察边界。201 收藏 -
Go bytes.TrimSpace 会按 Unicode 空白规则去掉字节切片首尾的空白,并保留中间内容。本文说明最小写法、空结果、返回子切片的共享存储边界,以及与 bytes.Trim 等函数的选择。201 收藏 -
Go bufio.Scanner 结果不稳定时,应分别检查临时缓冲复用、扫描错误、分词规则与异步顺序。通过有界串行示例说明 Text 快照、整批失败策略和数据交接边界。201 收藏 -
用 Go net.Resolver.LookupSRV 查询服务记录,拆解 Target、Port、Priority、Weight 的职责,并给出带超时、可直接交给 DialContext 的地址转换写法。201 收藏 -
解释 Go encoding/asn1.Unmarshal 返回的 rest:如何区分顶层多余 DER 数据、连续对象解析,以及 SEQUENCE 内部未映射字段,避免把 err == nil 误判为输入已完全消费。201 收藏 -
Go 服务中的 goroutine 数量持续增长,不要先猜是哪一行代码泄漏。先观察数量趋势,再用 goroutine profile 对比重复堆栈,沿着 channel、定时器、网络调用和 context 的生命周期找到没有退出条件的工作函数。200 收藏 -
Go 客户端偶发 EOF 时,先区分响应头已收到但响应体中途断开,还是请求阶段根本没有建立完整响应,再结合已读字节、Content-Length、请求标识和服务端日志判断是否为服务端提前关闭,最后只对可安全重建的幂等请求有限重试。200 收藏 -
Go 使用 archive/tar 解包时,权限差异常常不是 Header.Mode 丢失,而是创建权限受到 umask 影响或目录没有显式 Chmod。本文按普通文件、目录和特殊条目拆开处理,给出一套可复用的还原思路。200 收藏 -
httptest 的 Host 与普通 Header、URL.Host 并非同一字段。本文解释路径请求的默认主机,给出表驱动 Handler 测试和本地 HTTP 往返写法,并说明端口与 TLS 的边界。200 收藏 -
Golang · Go教程 | 3星期前 | JSON · bytes.Buffer · Go教程 · encoding/json · Go encoding/json bytes.Buffer json.Compact JSON压缩 JSON空白
Go 的 json.Compact 可以去掉 JSON 结构中的无意义空白,同时保留字符串内容。本文用 bytes.Buffer 组织压缩结果,说明合法输入、非法 JSON、错误处理和 Compact、Marshal、Indent 的用途边界。200 收藏