Go教程技术文章
-
Go 的 TLSHandshakeTimeout 只负责 HTTPS 客户端 TLS 握手阶段的等待时间。本文用一个自定义 Transport 拆开连接、握手、响应头和响应体的超时边界,并说明如何根据错误现象选择排查方向。194 收藏 -
Go jsonschema/v5 可以把 JSON Schema 编译成可复用的 *jsonschema.Schema。本文用一个小例子说明如何只编译一次、重复校验多份文档,并区分解析错误、编译错误和 ValidationError。194 收藏 -
Go archive/tar 遇到长文件名时应选择 PAX 格式。本文用 Writer 与 Reader 说明 FormatPAX、Header.Name、Next 和 USTAR/GNU 的取舍。194 收藏 -
本文围绕 Go testing.B 的 ReportMetric 说明如何让基准测试报告输出自定义指标,重点排查指标为空、被 ResetTimer 清除、单位覆盖、总量未除以 b.N,以及 RunParallel 并行计数不安全等问题。194 收藏 -
bufio.Writer 的 Flush 失败后会保留错误状态。本文用一个可重试的小项目说明如何记录底层 Writer 已接收的字节数、保留原始数据,并用新的 Writer 安全重建未完成部分。194 收藏 -
Go 并发子测试中的诊断信息容易和其他分支混在一起。本文围绕 testing.T.Log、Logf、Name 与 t.Parallel,说明日志可见时机、上下文归属和常见边界。193 收藏 -
用 Go x/text/currency 把货币单位绑定到金额,再交给 message.Printer 按语言标签输出地区习惯的货币符号;同时说明 FromTag、FromRegion、ISO 和金额展示的边界。193 收藏 -
Go 的 x509.CertPool.AppendCertsFromPEM 用于把 PEM 编码的证书追加到信任池。本文说明单个证书、证书链、系统根证书合并和 TLS 使用时的判断边界。193 收藏 -
filepath.Rel 只按路径字符串计算相对关系,不会替你解析符号链接。本文用 Go 标准库演示先统一解析根目录与目标路径,再计算相对路径,并拆开解析失败、路径不兼容和目标尚不存在等边界。193 收藏 -
调用方先准备递增有序的切片,把同一份缓冲区反复传给 slices.BinarySearch;文章说明如何区分命中索引、未命中插入位置和结果容器分配。193 收藏 -
Go go/doc.New 不负责解析源码,它接收 go/ast.Package 并整理包注释、导入路径和声明文档。本文用 NewFromFiles 组装 AST,说明 ParseComments、测试文件、Mode 与 AST 所有权边界。193 收藏 -
Go testing.F.Add 用来把固定回归样例加入模糊测试种子语料。本文说明参数类型和顺序、调用时机、普通 go test 与 -fuzz 的运行关系,以及如何整理稳定的 fuzz target。193 收藏 -
go/ast.MergePackageFiles 可以把同一包的多个 *ast.File 合并成一个文件级 AST,但它依赖已废弃的 ast.Package 和 MergeMode。本文用最小示例说明三个过滤选项的作用、导入与注释边界,以及何时应改用 go/types。193 收藏 -
讲清 Go constant.BitLen 如何计算整数常量绝对值的二进制位数,并用正负数、零、超大整数和 Unknown 示例区分有效位数、符号位与固定宽度容量。193 收藏 -
用 Go 的 url.Values 和 http.NewRequest 构造带重复查询参数的客户端请求,说明 URL 编码、请求头、错误处理与响应体关闭规则。192 收藏