Go教程技术文章
-
用 Go constant.ToInt 判断编译期数值能否精确表示为整数,并进一步说明 constant.Int、constant.Unknown、Int64Val 与目标整数类型范围之间的区别。194 收藏 -
Go 的 http.NewResponseController 能统一调用刷新、截止时间、连接接管与全双工能力。本文用场景对比和完整示例讲清选择方法与边界。194 收藏 -
Go JSON Decoder 在 Decode 前调用 UseNumber,可将动态接口中的数字保留为 json.Number。本文说明低位丢失的排查方法、Int64 范围与错误处理,以及从文本转换大整数的边界。194 收藏 -
Go Server.ConnState 可统计连接当前状态,但不能替代请求并发数。通过连接状态表、互斥锁和快照示例,解释终态清理、HTTP/2 口径及采集请求对统计的影响。194 收藏 -
io.ReadAtLeast 读取的是至少 min 个字节,不等于一定只读取 min 个字节。本文说明如何控制缓冲区、解析可变长度消息的固定前缀,并处理 EOF、ErrUnexpectedEOF 和 ErrShortBuffer。194 收藏 -
Go 原生 fuzzing 会把种子输入和失败输入保存为语料库。本文说明如何使用 F.Add 与 testdata/fuzz 管理语料,并用 go test 和 -run 复现指定输入。194 收藏 -
Go 的 net/url 适合把地址拆成 URL 结构,再用 Values、JoinPath 和 String 重建。本文给出查询参数、路径转义、相对地址和请求 URI 的处理边界。194 收藏 -
Go 1.27 的 strings.CutLast 可以围绕字符串中最后一次出现的分隔符返回 before、after 和 found。本文用一个小型反向拆分工具说明它的返回契约、未命中边界,并与 Cut、LastIndex、Split 做选择对比。194 收藏 -
bytes.Buffer.Available 返回的是底层缓冲区尚未使用的容量,不是当前可读字节数。本文用固定状态表和最小示例区分 Len、Cap、Available、Bytes,并说明读取与 Reset 后的判断方式。194 收藏 -
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 html/template 复用页头、页脚和基础布局,关键是拆分 layout、partial、page 三类模板,用 embed.FS 配合 template.ParseFS 解析,再通过 block 注入页面正文。193 收藏