Go教程技术文章
-
Go 服务需要在不重启进程的情况下临时关闭一条新逻辑时,atomic.Bool 可以提供轻量的并发开关。本文用运行时功能开关示例说明 Load、Store、启动默认值、灰度比例和回滚检查该怎么组织,避免数据竞争与状态不一致。270 收藏 -
Go 1.24 引入的 crypto/subtle.WithDataIndependentTiming 能在敏感计算期间启用架构相关的独立时序能力,但它不会把变长代码自动变成常量时间。本文用最小示例说明包裹范围、嵌套调用、goroutine 继承和旧版本兼容边界。270 收藏 -
Go 1.25 为 testing.T 增加了 Attr 方法,可以把稳定的测试元数据写进普通测试日志和 go test -json 的 attr 事件。本文用一个订单接口测试拆开 t.Attr 的调用位置、键值边界、JSON 验收方式,以及与 Log 和 Output 的分工。269 收藏 -
用同一个 httptest 服务验证 Go RoundTripper 总耗时与 httptrace.ClientTrace 分阶段耗时的差别,给出按排障目标选工具的边界。269 收藏 -
用 Go text/template/parse 运行同一份示例,检查 ActionNode、Pipeline 节点和语法错误位置,给模板静态检查留下可核对的证据。269 收藏 -
Golang · Go教程 | 3星期前 | golang · https · TLS · Go教程 · 生产运维 · 证书轮换 · atomic.Value Go HTTPS证书热切换 GetCertificate tls.Certificate 证书轮换
Go HTTPS 服务轮换证书时,不必为了替换文件重启进程。本文用 tls.Config.GetCertificate 和 atomic.Value 保存当前证书,演示新连接切换、旧连接保持、加载失败回退与指标核对,给出适合生产灰度的实现边界。267 收藏 -
Go 的 encoding/binary.NativeEndian 适合读取本机格式,但不应直接替代协议字节序。本文用一个二进制记录示例拆开 NativeEndian、unsafe 转换和跨机器可移植编码的边界。267 收藏 -
Golang · Go教程 | 4天前 | Go教程 · Go工具链 · Go测试 · JSON解析 · 测试报告 Go 1.27 go test -json OutputType test2json
Go 1.27 为 go test -json 的 output 事件增加可选 OutputType。本文用兼容解析器讲清 frame、error、error-continue 与空值的处理方式,以及多行错误如何合并而不丢失原始输出。266 收藏 -
Go 的 hash/maphash 用 Seed 把哈希随机性与具体计算分开。本文通过可运行示例说明 MakeSeed、Seed 复用、Hash.SetSeed 与不可序列化边界,帮助你在内存索引中稳定使用它。265 收藏 -
线上接口延迟升高时,goroutine 画像能帮助定位到底是 channel、锁还是外部调用在等待。本文从可见症状开始,结合 runtime/pprof 的 goroutine 采样、状态分类和可复现验证,拆出一条不靠猜的排查路径。263 收藏 -
Go 的字符串按字节保存,同一个可见字符可能有预组合和组合字符两种 UTF-8 表示。本文用 golang.org/x/text/unicode/norm 判断 NFC、统一输入,并解释规范化前后的字节长度边界。263 收藏 -
Go sync.Pool 能减少临时对象分配,但它不是可靠缓存。本文用日志和基准测试拆开 Get、Put、GC 清空、对象重置与并发场景,说明哪些对象适合放进 Pool,哪些数据必须交给真正的缓存或业务存储。261 收藏 -
Go 1.27 为 testing/synctest 增加 Sleep,把时间休眠与同步等待放到同一个测试语义里。本文拆开 Sleep、Wait、协作组和虚拟时间的边界,帮助你判断测试为何仍会卡住或提前通过。261 收藏 -
泛型代码里通过 reflect.TypeOf((*T)(nil)).Elem() 获取类型既绕又容易误读。本文用 Go 1.22 的 reflect.TypeFor[T]() 重写一个注册表实验,比较 nil、指针和接口类型的结果,并给出版本兼容与测试边界。259 收藏 -
Go 标准库 flag 默认把一个参数当成一个值。本文用自定义 flag.Value 收集重复参数,说明切片初始化、空值校验、错误提示和最终读取的边界。259 收藏