Go语言技术文章
-
Go 的 tls.ClientSessionCache 命中率低,不一定是 LRU 容量太小。先确认真的建立了新 TLS 连接,再检查缓存键、会话票据、证书和协议兼容条件,最后用 ConnectionState.DidResume 验证。428 收藏 -
Golang · Go问答 | 3天前 | String · unicode · utf-8 · Go问答 · Go []rune转字符串 Go字符串长度 Go rune长度 Go UTF-8长度 utf8.RuneCountInString
Go 中 []rune 转回 string 后长度变化,通常是因为 len(string) 统计 UTF-8 字节而不是 Unicode code point。本文用原创示例拆开三种长度口径,并给出有效性检查与场景选择方法。428 收藏 -
Go 基准测试中的 b.N 会随测量阶段变化,缓存一次结果会让后续迭代跳过被测代码,导致 ns/op 失真。本文用代码说明正确循环、计时边界和缓存命中测试的拆分方法。428 收藏 -
Go 的 html/template 和 text/template 接口相近,但安全边界完全不同。本文从普通字符串、HTML 上下文、纯文本输出和 template.HTML 安全类型四个角度说明选择方法,并给出迁移与测试检查清单。427 收藏 -
用 Go benchmark 公平比较字符串拼接实现,掌握 ReportAllocs、AllocsPerRun、B/op、allocs/op 与 b.Loop 的使用边界。426 收藏 -
Go mod tidy 后出现 // indirect 不一定是多余依赖。本文从传递依赖、测试与构建条件三个入口排查来源,并用 go mod why、go mod graph 和 -diff 安全确认是否应该保留。424 收藏 -
解释 Go math/big.Float.Text 的 format 与 prec 如何共同决定输出形态,比较 e、f、g、x、b、p 的参数语义,并给出固定数值的可读示例与边界判断。424 收藏 -
Go test 显示 cached 不代表测试代码再次运行。本文用 -count=1 做一次明确复查,并区分清理缓存、重复运行和 CI 排查时的使用边界。424 收藏 -
Go 标准库 maps.Clone 可以复制 map 的顶层键值结构,并保留 nil 输入的语义。本文用最小示例说明普通复制、nil 与空 map、浅复制边界、自定义 map 类型和旧环境替代写法。423 收藏 -
用互斥的 go:build 约束隔离 Go 的生产实现与测试替身,配合 go test -tags 和 go list 检查文件选择,避免测试代码误进入生产构建。423 收藏 -
讲清 Go time.FixedZone 的 name 与秒级 offset 语义,演示如何构造 UTC+08:00、转换已有时间并区分 FixedZone 与 LoadLocation。423 收藏 -
用 Go io.MultiReader 按顺序合并多个输入流,再交给 io.Copy 统一消费;文章同时说明部分读取、非 EOF 错误、文件关闭和 MultiWriter、LimitReader 的选型边界。421 收藏 -
通过 go mod why 的包级、模块级和 -vendor 查询,理解依赖路径范围,避免把解释命令误当成清理或版本选择命令。420 收藏 -
Go 的 httptest.NewServer 关闭后仍有连接,通常要分别处理 Server、Response.Body 和 Client/Transport。本文用最小测试示例说明读取关闭响应体、关闭服务端和回收空闲连接的正确边界。419 收藏 -
Go 类型断言如何限定接口范围?本文说明具体类型断言与接口类型断言的区别,演示 comma-ok、安全探测、最小接口和 type switch 的取舍。419 收藏