Go语言技术文章
-
reflect.TypeFor 读取的是泛型参数的静态类型,不会因为没有动态值而返回空类型;真正需要单独处理 nil 接口的是 reflect.TypeOf。本文用一个类型描述小工具串起两种 API,并处理 Kind、Elem 和不支持展开的异常分支。243 收藏 -
使用 Go archive/tar.Writer.WriteHeader 写入目录 Header 时,关键是设置 tar.TypeDir、规范 Name,并把目录视为无数据体条目;随后再通过新的 Header 写入目录中的普通文件。243 收藏 -
用 go/types.Named.TypeArgs 可以读取泛型命名类型实例化时绑定的类型实参。本文从一个 Box[int] 的类型检查结果出发,说明如何导出 TypeArgs,并区分 Origin、TypeParams 与 Underlying 的职责。243 收藏 -
Go 监听 socket 选项不生效,应先确认 ListenConfig 是否接入实际监听路径,再检查 Control 的绑定前时机、实际网络名称及两层错误。本文给出 Linux 示例,并说明跨平台实现和选项读回的判断范围。242 收藏 -
Go 1.23+ 可以用 maps.All 把 map 暴露为 iter.Seq2。本文从最小封装开始,说明如何组合过滤、提前停止和按需收集,并提醒 map 遍历顺序不可依赖。242 收藏 -
用 Go database/sql 批量写入时,把每个批次放进独立事务,批内复用预编译语句,遇到错误及时回滚并释放资源,同时说明批次大小和提交失败的处理边界。242 收藏 -
讲清 Go 模块元数据字段、Replace 替换关系与多对象 JSON 流读取,提供保留失败状态的脚本及最小报告方案。242 收藏 -
通过ParseAddr与IsUnspecified区分0.0.0.0、::和零值Addr,给出解析错误处理、状态对照表与配置记录模型,避免将无效值误判为普通有效IP。242 收藏 -
os.WriteFile 的 perm 参数只在创建新文件时参与权限设置,覆盖已有文件时会保留原权限。本文从 PathError、父目录、运行身份和只读挂载四层排查 permission denied,并说明何时改用 OpenFile 或显式 Chmod。242 收藏 -
Go 反射读取字段时,CanInterface 用来判断 Value.Interface 是否可以安全调用。本文用导出字段、未导出字段、无效 Value 和 CanSet 对照说明判断顺序,给出通用读取函数的降级写法。242 收藏 -
Go time.Format 用固定参考时间片段识别年月日和时分秒,输出值来自实际时间。通过固定日期示例,说明补零、小数秒、12小时制与时区,并区分布局和目标日期。242 收藏 -
Go x/image/font/sfnt 的 UnitsPerEm 是字体内部的抽象单位数量,不是输出图片的字号。本文用 ppem、26.6 定点坐标、Metrics 与 GlyphBounds 拆开定位,让字号、字形边界和画布尺寸各自承担正确职责。242 收藏 -
Go strconv.QuoteToGraphic 返回双引号 Go 字符串字面量,保留 Unicode 图形字符并把制表符、换行等非图形字符转成 Go 转义。本文说明输入边界、与 QuoteToASCII 的区别,以及日志和配置展示中的选型方法。242 收藏 -
go test -run 匹配的是测试标识而不是文件名,未转义斜杠还会表达父子测试层级。本文说明普通片段、完整锚定、子测试选择、包位置、shell 引号与 -list 排查方法,帮助定位为什么目标用例没有命中。242 收藏 -
用 Go slices.Compact 编写按行去重工具,区分相邻去重和排序后全局去重,提供完整代码、输入容量限制、错误处理与数量对比,并说明性能测量和切片共享的边界。242 收藏