Go语言技术文章
-
Go crypto/sha3.NewSHAKE128 适合需要按调用场景决定摘要长度的任务。本文从 Write、Read、Reset 的状态顺序出发,说明如何读取指定长度的 SHAKE128 输出,以及为什么读取后不能继续写入。501 收藏 -
围绕 Go archive/tar.Reader 的 tar.Header 可选字段,说明如何按 Typeflag 处理普通文件、目录、链接、PAXRecords 与 Xattrs,并安全消费当前条目数据。501 收藏 -
MySQL 8.4 查询属性可以把页面 URL 或请求标签附着到下一条 SQL,再由 query_attributes 组件提供的 mysql_query_attribute_string() 在服务器端读取。本文说明安装组件、传值、处理 NULL、跨语句保存和关键限制。501 收藏 -
Go flag.FlagSet 使用 ContinueOnError 后,Parse 会返回帮助请求或参数解析错误。本文说明如何用 SetOutput 捕获默认输出、用 errors.Is 区分 flag.ErrHelp,并自定义 Usage 处理子命令和测试场景。501 收藏 -
说明 reflect.TypeFor[T]() 只负责取得泛型类型元数据,如何把它作为类型计划缓存键,再由调用方通过 dst[:0] 复用已有 []byte 容量,并处理异步消费与超大容量边界。501 收藏 -
reflect.TypeFor[T]() 适合固定泛型目标类型,但它不会替你判断运行时值。本文从 nil、Kind、AssignableTo、Implements 和 ConvertibleTo 五个角度,写出可复用的 Go 反射类型边界判断。501 收藏 -
netip.ParseAddr 只解析 IP 地址,因此会拒绝带端口的完整端点。需要处理 host:port 时应改用 ParseAddrPort;IPv6 端点要写成 [地址]:端口,端口必须是数字。本文还说明 AddrPortFrom、区域标识、端口 0 和 MustParse 的适用边界。501 收藏 -
Go 反射读取指针指向的结构体字段时,需要先解引用并处理 nil、无效 Value、字段不存在和未导出字段。本文用一个通用读取器说明 ValueOf、Indirect、FieldByName 与 CanInterface 的协作顺序。501 收藏 -
Go generate 未执行预期指令时,区分注释未识别、包未选中、工具失败和输出目录偏移。通过包内生成器示例说明指令格式、工作目录、参数解析与产物责任。501 收藏 -
Go 的 sync.RWMutex 允许多个读者并发,但写锁一旦排队,新读者也会等待。本文通过原创实验和指标拆分,分析写锁等待过久的常见竞争来源,并给出可落地的缩短临界区方法。501 收藏 -
Python xml.dom.minidom 解析大 XML 后,应在最后一次访问 DOM 之后调用 Document.unlink,或用 with 自动清理。本文说明整树与子树的作用范围、try/finally 写法、结果复制和清理后的访问边界。501 收藏 -
解释 Go os.File.ReadAt 到文件末尾返回部分数据和 io.EOF 的原因,梳理 n、len(b)、off 的判断边界与定长读取处理方式。501 收藏 -
PHP 8.4 起 fgetcsv 依赖 escape 默认值会触发弃用提示。本文说明如何显式传入空字符串兼容 RFC 4180,如何处理双引号与反斜杠字段,以及旧格式迁移时的边界。501 收藏 -
以临时文件辅助函数和并行子测试说明testing.TB.Cleanup的资源归属、后登记先清理规则及与defer、TempDir的区别,避免提前关闭与重复释放。501 收藏 -
Python typing.TypeIs 可以把可复用的布尔判断接入类型收窄,并在 True 与 False 两个分支提供更精确的类型信息。本文从联合类型示例出发,说明安全写法、Python 版本导入、TypeGuard 对比和错误实现边界。501 收藏