Go语言技术文章
-
Go format.Source 接收内存中的 []byte 源码,解析成功后返回标准 gofmt 风格的字节,语法不完整则返回错误。本文用一个小型代码生成器演示完整文件、局部源码、导入排序、错误包装和测试方法。123 收藏 -
Go mod edit -replace 默认会改写 go.mod。本文用 go.work 和独立 modfile 两种方式隔离本地依赖替换,并给出提交与 CI 检查方法。122 收藏 -
说明 Go archive/zip 如何自动生成 ZIP64 元数据,使用 io.Copy 流式写入大条目,并正确读取 64 位大小字段与处理关闭错误。122 收藏 -
Golang · Go教程 | 6天前 | Go教程 · database/sql · Go database/sql 动态查询 sql.Rows.ColumnTypes ColumnType DatabaseTypeName ScanType
Go 的 sql.Rows.ColumnTypes 可读取查询结果列的名称、数据库类型、扫描类型、长度、精度和可空性。本文给出完整示例,并比较 Columns、目录查询与动态值扫描的适用边界。122 收藏 -
errors.Unwrap 只调用 Unwrap() error,适合单链包装;errors.Join 返回值实现的是 Unwrap() []error,所以直接调用得到 nil。匹配原因应使用 errors.Is 或 errors.As,枚举时再显式处理多子错误接口。122 收藏 -
Go crypto/subtle 的 ConstantTimeSelect 用 0/1 条件在两个整数之间选择结果。本文说明 v 的合法范围、如何生成选择值、参数求值边界和测试方法。121 收藏 -
讲解 Go bufio.Scanner 如何编写保留分隔符的 SplitFunc,覆盖 advance、token、atEOF、跨缓冲区匹配和尾部残片处理。121 收藏 -
Go 的 sync.RWMutex 不支持从 RLock 原子升级到 Lock;持有读锁时申请写锁会等待自己释放读锁,本文用等待关系解释死锁,并给出释放后重取和拆分状态锁的修复写法。120 收藏 -
Go HTTP 服务端选择 ReadHeaderTimeout 还是 ReadTimeout,关键看是否要限制请求体的整体读取时间。本文按请求阶段、接口类型和回归场景拆开比较,并给出从整请求超时迁移到分层配置的清单。120 收藏 -
Go archive/zip.Reader.Open 读取嵌套目录时,路径要使用 ZIP 内部的斜杠分隔名;本文用完整示例说明目录判断、资源关闭和常见错误排查。120 收藏 -
区分 Go HTTP 请求超时与 Transport 空闲连接回收,给出连接池参数、共享 Transport 和主动清理的排查方法。120 收藏 -
讲清 Go bufio.Scanner.Buffer 的初始缓冲区、最大 token 上限与错误处理,并给出 Scanner 和 bufio.Reader 的选型边界。120 收藏 -
通过 P-256 私钥与 P-384 公钥的最小示例,说明 Go crypto/ecdh 为什么拒绝跨曲线计算,并给出调用前检查、协议协商和同曲线修复方法。120 收藏 -
big.Int.FillBytes 会把绝对值写成左侧补零的大端固定长度字节串,并返回原缓冲区;容量不足时会 panic。本文给出最小用法、BitLen 容量检查、零值与负数边界以及复用测试。120 收藏 -
用 Go 的 log/slog 配置 JSONHandler,在请求入口绑定 request_id、method 和 path,并把带字段的 Logger 传入业务层,统一结构化日志输出、分组、脱敏与性能边界。120 收藏