Go语言技术文章
-
用 Go 标准库 netip.Prefix.AppendTo 把 IPv4 与 IPv6 网段写入既有字节缓冲区,验证前缀长度、零值和容量边界,避免不必要的字符串分配。479 收藏 -
用 Go filepath.IsLocal 先拦截绝对路径和 .. 路径,再配合 Join 与符号链接复核,建立文件下载场景的安全边界。479 收藏 -
Go 结构体末尾放置 struct{} 或 [0]byte 时,字段本身仍可能是零大小,但非空结构体会为布局安全保留额外字节。本文比较 go/types.Sizes、unsafe.Sizeof 与字段偏移的适用边界。478 收藏 -
Go 1.23 起可以让 for range 直接消费函数迭代器。本文用一个泛型集合实现 iter.Seq 的 All 方法,说明 yield 返回 false 时如何提前停止,并梳理数据复制、并发和发布前检查边界。478 收藏 -
Go maphash.Bytes 可以直接把 []byte 映射为 uint64 哈希值。本文说明 MakeSeed 与 Seed 复用、Bytes 和 Hash.Write 的关系,以及进程边界和密码学用途限制。478 收藏 -
Go crypto/tls 的 VerifyConnection 会在标准证书校验后接收 ConnectionState,适合补充证书属性、连接状态和恢复连接策略。本文比较默认校验、VerifyPeerCertificate 与 VerifyConnection 的边界,并说明 InsecureSkipVerify 和服务端客户端证书的风险。478 收藏 -
数据库里的 UUID 与 Go 结果不一致,通常是 MySQL swap_flag 或二进制字段映射不一致。本文用 HEX 对照、成对转换和 Go BINARY(16) 读写链路定位并修复字节顺序问题。478 收藏 -
用 Go 1.27 实验性 simd API 把 RGBA 像素整理为 uint32 向量,批量调整 RGB、保留 Alpha,并正确处理尾部像素与架构回退。478 收藏 -
讲清 Go database/sql 中 MaxIdleConns 与 MaxOpenConns、Idle、InUse 的容量关系,并用 DBStats 判断复用和等待。478 收藏 -
讲清 Go fmt.Appendf 如何把格式化结果直接追加到字节切片,并用预分配、返回值接收和基准测试控制分配。478 收藏 -
讲清 Go io.PipeWriter.CloseWithError 如何把生产端错误传给读端,覆盖 Close、EOF、部分数据、Read 循环和关闭顺序等关键边界。478 收藏 -
用 bufio.Reader.Peek 预读固定长度协议头时,读取位置不会前移;继续使用同一个 Reader 消费正文即可。文章同时给出复制预读字节、处理 ErrBufferFull 与 io.EOF 的边界方案。478 收藏 -
Go 的 http.NewRequest 不能只看 ContentLength=0 判断 body 是否为空。本文对比 nil、http.NoBody、空 bytes.Reader/strings.Reader 与自定义 Reader,说明 Request.Body、ContentLength、GetBody 的组合语义,并给出可直接复用的判断代码。478 收藏 -
用 Go filepath.WalkDir 按扩展名统计普通文件,说明目录内符号链接、错误回调、SkipDir、大小写和根路径链接的边界。478 收藏 -
testing.T.Cleanup 会在当前测试及其子测试完成后执行,多个回调按后注册先执行。本文用 t.Run、t.Name 和事件记录说明父子测试清理归属、注册顺序、并行子测试边界及常见误区。478 收藏