Go语言技术文章
-
Go checkptr 报错通常可归到指针对齐、跨分配对象或指针算术越界三类问题。本文结合 unsafe.Pointer、uintptr 和原始分配对象,说明如何定位并修复不安全转换。347 收藏 -
Python typing.Annotated 的元数据默认会被 get_type_hints() 移除。本文演示如何用 include_extras=True 保留注解,并通过 get_origin、get_args、__origin__ 和 __metadata__ 读取基础类型与元数据。347 收藏 -
Files.walk 返回的 Stream会持有遍历目录的资源,正确做法是用 try-with-resources 包住完整操作,并区分创建、懒遍历和关闭阶段的异常。 347 收藏 -
bytes.Reader 的 Seek 只计算并保存逻辑游标,因此正数位置可以超过底层切片末尾;真正读取时才返回 io.EOF。本文结合源码语义说明原因、后续行为和严格边界写法。347 收藏 -
Golang · Go教程 | 3星期前 | 错误处理 · 数据校验 · Go教程 · Go compress/gzip ErrChecksum gzip.Reader io.ErrUnexpectedEOF
Go 的 gzip.Reader 只有在完整读取到 gzip trailer 后才能完成 CRC32 和原文长度校验。本文用原创示例说明如何区分截断数据、校验和错误、非法头部与正常 EOF。347 收藏 -
用双网卡示例讲清 Linux ip rule 的 from 规则、独立路由表、优先级和 ip route get 验证方法。347 收藏 -
Go 1.26 的 //go:fix inline 可让库作者把旧 API 的兼容包装函数转成自动迁移规则。本文用改名与参数重排示例说明声明方式、go fix -diff 预览、批量执行和回归检查。347 收藏 -
os.Root 把受信任目录封装成文件访问边界:Root 方法可跟随仍位于根内的符号链接,但任何路径组件一旦解析到根目录之外就返回错误。本文给出安全打开模式、反例、平台限制和补丁版本提醒。347 收藏 -
Go 模块路径是包身份的一部分。本文给出保留旧入口、单一新实现、类型别名与函数包装的迁移方案,并说明如何排查双份包和正确使用 replace。347 收藏 -
Go 的 database/sql Conn.Raw 适合短暂访问驱动特有能力,但底层 driver.Conn 只能在回调期间使用。本文用一个连接池场景说明借用、错误传播、归还和并发边界。347 收藏 -
用 io.NewSectionReader 为大文件建立固定偏移和长度的只读视图,再通过 io.Copy、ReadAt 和 Seek 导出或读取指定区间,避免先把整个文件加载进内存。347 收藏 -
用 Go 1.22 之后的 net/http ServeMux 方法模式注册 GET、POST 路由,说明 HEAD 特例、405 响应、匹配优先级和版本兼容边界。347 收藏 -
用 Go strings.LastIndexByte 定位最后一个 ASCII 路径分隔符,拆出父路径和末段,处理未找到、根路径、末尾分隔符、UTF-8 字节偏移和多种分隔符的 API 选择。347 收藏 -
MySQL JSON_STORAGE_FREE 只有在 JSON 列通过 JSON_SET、JSON_REPLACE 或 JSON_REMOVE 进行合适的部分更新后,才可能返回正数。本文用可复用的 SQL 说明如何判断空闲空间、为什么结果为 0,以及如何结合 JSON_STORAGE_SIZE 排查。347 收藏 -
Redis 客户端出现 NOAUTH 或权限拒绝时,先用 ACL GETUSER 查看用户状态、密码规则和命令类别,再用最小权限验证实际业务命令。本文给出一套不改业务数据的排查顺序。346 收藏