Go语言技术文章
-
Go Zap 的 zap.Object 适合把一个自定义对象作为嵌套结构写入日志。本文从 ObjectMarshaler 和 zapcore.ObjectEncoder 的职责开始,给出请求元数据的原创实现,说明字段命名、错误返回、指针接收者和敏感信息边界。380 收藏 -
Go go-geom 可通过 Bounds 和 Min、Max 取得几何坐标包围盒。本文用二维折线演示空范围、有限坐标检查及多条折线合并,并说明布局与坐标系的区别。380 收藏 -
Go go-mp3通过NewDecoder包装输入,再用Read逐块取得PCM字节。本文给出原创同步消费函数,说明16位小端双声道格式、有效缓冲区、EOF处理、长度未知及输入文件关闭的边界。380 收藏 -
Go filepath.WalkDir 跳过目录应先判断目录类型,再直接返回 SkipDir。本文给出目录名和根相对路径两种排除写法,并说明文件过滤、根目录保留、读取错误、输出完整性和符号链接的处理边界。380 收藏 -
本文从一个带固定前缀的字节输入工具出发,演示 bytes.CutPrefix 如何识别前缀、保留 found 状态并组合成可复用的 Go 命令,同时说明空前缀、空输入和原始切片生命周期。380 收藏 -
本文围绕 Go atomic.Pointer 替换只读配置快照,解释首次 Load 为空、发布后修改内部数据和复制原子对象等问题,并给出构造后一次 Store 的迁移写法。380 收藏 -
Go encoding/csv.Writer 默认使用 LF 换行,UseCRLF=true 后每条记录改用 CRLF。本文说明它对 Windows CSV 兼容、字段解析、编码、缓冲刷新和错误处理的实际影响。380 收藏 -
用 Go genetlink 的 GetFamily 查询 generic netlink family,遍历 Family.Groups 输出多播组名称与 ID,并说明如何按名称选择组后调用 JoinGroup。379 收藏 -
解析网络帧、文件头或自定义二进制格式时,字段长度和字节序必须同时明确。本文用 Go encoding/binary 的 BigEndian、ByteOrder 和 Read 说明如何读取固定长度字段,并处理短输入、结构体填充与读取方式选择。379 收藏 -
Go 处理超出 int64 范围的业务整数时,应使用 math/big 的 big.Int.SetString 完整解析,明确十进制与 base=0 的区别,检查失败标记并在转 int64 前确认范围。378 收藏 -
Go Ticker 相关的 goroutine 增长需要区分接收循环滞留和业务回调堆积。本文解释 Stop 不关闭 C、Go 1.23 回收边界,并给出可取消同步循环,明确取消、停表与等待收尾的职责。378 收藏 -
Go channel 关闭并耗尽后,单值接收仍会返回元素类型的零值。本文用 int channel 说明合法零值与关闭状态的区别,并给出 value、ok 双值接收、range 和缓冲 channel 的边界处理方式。378 收藏 -
Go url.URL.Port 只返回合法数字端口字符串。本文说明如何区分未设置端口与显式默认端口,并配合 URL.Hostname、net.SplitHostPort 正确处理域名、IPv4、IPv6 和业务默认端口。378 收藏 -
Go packages.Load 可加载显式 Go 文件集合,也可用 file= 查询所属包。本文说明两者的范围差异,给出文件列表封装,并解释 Mode、路径处理和两层错误。378 收藏 -
Go x/image/font/sfnt 的 Font 方法可以并发调用,但同一个 *sfnt.Buffer 不能被并发复用。本文结合 GlyphIndex、Metrics 和 LoadGlyph 说明独立 Buffer、nil Buffer、sync.Pool 借还边界,以及返回 Segments 前必须复制的原因。378 收藏