Go教程技术文章
-
用可选 Sender 示例解释 Go 接口为何会携带 nil 指针,区分接口比较、类型断言和对象可用性,并通过构造函数明确缺席时的 nil 返回约定。380 收藏 -
Go linkname 会改变对象文件符号绑定并绕过普通包封装。本文区分公开 API、握手式 linkname 和单方面拉取内部符号的风险,结合 Go 1.23 之后的链接器限制说明如何评估兼容性与维护成本。380 收藏 -
Go 标准库 uuid.NewV4 可以生成版本 4 UUID,再按下游类型选择 String、MarshalText 或 AppendText 转成文本。本文用一个最小请求 ID 项目说明三种出口、错误边界和接入检查点。380 收藏 -
Go hash/crc32 的 IEEE 与 Castagnoli 不是可以随意互换的参数。本文用 MakeTable、Checksum、New 和 Update 说明如何按协议兼容性选择多项式,并划清 CRC32 与加密摘要的边界。380 收藏 -
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 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 url.URL.Port 只返回合法数字端口字符串。本文说明如何区分未设置端口与显式默认端口,并配合 URL.Hostname、net.SplitHostPort 正确处理域名、IPv4、IPv6 和业务默认端口。378 收藏 -
Go packages.Load 可加载显式 Go 文件集合,也可用 file= 查询所属包。本文说明两者的范围差异,给出文件列表封装,并解释 Mode、路径处理和两层错误。378 收藏