Go语言技术文章
-
Go 的 zip.Writer.Copy 会通过 OpenRaw 直接复制 ZIP 条目的原始压缩数据,避免解压和重新压缩。本文给出合并归档的完整写法,并说明改名、关闭顺序与错误边界。130 收藏 -
Go 的 x509.SystemCertPool 在 Linux、macOS、Windows 和容器中使用的信任来源与实现不同;Subjects 也不会完整枚举平台系统根,因此数量差异不等于验证能力差异。本文按故障时间线说明根因、排查与修复。130 收藏 -
Go 1.24 的 http.Protocols 可以显式控制 HTTP/1、TLS HTTP/2 和明文 HTTP/2。本文用一份策略构造函数分别配置 Server.Protocols 与 Transport.Protocols,并说明 nil、零值、URL 与 TLS 条件的边界。129 收藏 -
Go 1.20 起,普通接口类型可以作为 comparable 约束的类型实参,但接口动态值仍可能因为切片、map 或函数而在比较时 panic。本文区分接口可比较、严格可比较和约束满足规则,并给出泛型函数与 map 键的判断清单。129 收藏 -
Go HTTP Server 的 ReadTimeout、WriteTimeout 和 IdleTimeout 分别约束请求读取、响应写入与 Keep-Alive 等待。本文用可运行配置讲清三者边界,并补充 ReadHeaderTimeout、业务 Context 与流式响应的取舍。128 收藏 -
Go 1.26 的 errors.AsType 用泛型类型参数从包装错误和错误树中提取具体类型,本文说明指针和值、遍历顺序、自定义 As 方法及生产排查边界。127 收藏 -
Go 依赖扫描命中漏洞但 govulncheck 未发现可达调用时,本文给出升级与临时豁免的判断矩阵、证据清单、到期机制和复扫方法。127 收藏 -
Go types.Identical 按语言规范比较完整类型身份,结构体标签也必须一致;IdenticalIgnoreTags 只在同一套比较中忽略 struct tag。本文用最小示例说明字段、嵌套结构、命名类型和转换判断仍然不能被忽略。126 收藏 -
安全扫描通过不等于 Go 服务已经安全。本文说明 govulncheck、go vet、竞态检测和模糊测试各自能证明什么、有哪些盲区,并给出分层 CI 门禁与复查清单。126 收藏 -
Go 的 InsecureSkipVerify 会跳过服务端证书链和主机名校验,短期能绕过握手错误,却把中间人风险带进连接。本文按证书链、私有 CA、ServerName 与 VerifyConnection 的职责,给出更安全的替代方案和上线检查清单。125 收藏 -
exec.Cmd.Cancel 定义 Context 结束时如何通知子进程停止,WaitDelay 则限制取消后的退出等待和进程退出后的管道收尾时间。本文用两个最小实验讲清组合方式、错误判断与常见误区。124 收藏 -
Go format.Source 接收内存中的 []byte 源码,解析成功后返回标准 gofmt 风格的字节,语法不完整则返回错误。本文用一个小型代码生成器演示完整文件、局部源码、导入排序、错误包装和测试方法。123 收藏 -
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 收藏 -
testing.B.Loop 解决了串行基准的计时和编译器优化陷阱,但并行基准仍要通过 RunParallel 与 PB.Next 分配工作。本文拆开两种语义,说明如何读取 ns/op、b.N、GOMAXPROCS 和 SetParallelism。122 收藏