Go语言技术文章
-
Go 的 io.NewSectionReader 可以把支持 ReaderAt 的数据源包装成固定区间读取器。本文用分段文件读取场景说明 offset、length、Read、ReadAt、Seek、Size 与 EOF 的关系。424 收藏 -
Go 中 len(string) 统计的是 UTF-8 字节数,而 unicode/utf8.RuneCountInString 统计的是 rune 数。本文用 Go 示例拆开两者的差异,并说明 []byte、非法 UTF-8 和字符限制场景该怎样选择。424 收藏 -
Go crypto/tls 的 CurvePreferences 类型是 []tls.CurveID,列表顺序不会直接决定协商优先级。本文围绕 MLKEM1024 说明 nil 默认值、显式集合、GODEBUG 与客户端服务端交集的排错边界。424 收藏 -
Go ascii85.Encode 的关键不是把目标切片容量设大,而是让目标切片长度足够,并用返回值截取有效结果。本文用 MaxEncodedLen 预留空间,解释 dst[:n]、尾部片段、z 缩写以及一次性编码和流式编码的边界。424 收藏 -
Go strconv.ParseFloat 的 bitSize 选择浮点精度而非小数位数。本文用传感器读数入口说明舍入、范围错误、NaN与无穷大,以及业务上下限的处理。424 收藏 -
Go rtreego 的空间维数不是可忽略的元数据:构造 Rect 时维数不一致会返回 DimError,距离查询遇到不一致维数可能触发 panic。本文按 API 边界说明如何统一检查 Rtree、Spatial、Point 与 Rect 的维度。424 收藏 -
Go 的 sync/atomic.Value 会记住首次写入的具体类型。本文用快照封装说明如何让 Store、Load 和更新始终保持类型一致,并避开 nil、指针与共享数据修改的常见坑。424 收藏 -
Go hex.Dumper 适合把分块到达的二进制数据持续格式化为 hexdump 文本。本文对比 hex.Dump,演示接入 io.Writer、处理 Read/Write 错误、正确 Close,并说明输出体积和生产环境边界。424 收藏 -
通过 encoding/json 的结构体、指针和 map 示例,拆开 JSON null 与字段缺失的输入差异,说明如何保留、清空和判断字段状态。424 收藏 -
自定义 ResponseWriter 包装器如果没有 Unwrap,ResponseController 可能找不到 Flush、deadline、全双工和 Hijack 能力。本文从一次中间件故障出发,给出可转发包装器、能力检查和错误边界。424 收藏 -
Go net/http.Transport 资源没有释放时,先检查 Response.Body 是否关闭并区分活动连接与空闲连接,再用连接池参数和生命周期清理控制资源回收。424 收藏 -
解释 RawBytes 的借用期限与切片共享,展示当前行复制和直接 Scan 到 []byte 的写法,并说明异步移交、NULL、Rows.Err 与关闭结果集的边界。424 收藏 -
Go 的 net.IPMask.Size 返回前导 1 的数量和掩码总位数。本文用 IPv4、IPv6、/0 与非连续掩码对照,说明怎样准确判断连续 CIDR 前缀,避免把合法零前缀误判为错误。424 收藏 -
使用 Go 的 net.Resolver.LookupMX 查询全部邮件交换记录,解释 MX.Host 与 MX.Pref,并处理超时、排序和部分结果错误。424 收藏 -
Go sync.Once 延迟初始化需要共享同一实例,并保存资源对象与初始化错误。本文用只读名称表示例说明并发发布、失败不重试及资源更新和关闭的边界。423 收藏