Go教程技术文章
-
Go 泛型切片算法不必一开始就抽象成复杂接口。本文从算法实际操作出发,讲清 []E 与 ~[]E 的选择、元素约束拆分、类型推断和命名切片边界。230 收藏 -
用一个嵌入资源适配层同时解决 Go 静态模板打包、目录前缀隔离和单元测试替换问题。文章给出 embed.FS、fs.Sub、template.ParseFS、fstest.MapFS 与 fstest.TestFS 的完整工程写法。230 收藏 -
Go 使用 archive/tar 解包时,先用 filepath.IsLocal 限制归档成员名,再区分目录、普通文件和链接条目,避免路径穿越与越界写入。230 收藏 -
Go sync.Map.Swap 会原子替换键对应的值,并用 loaded 返回值告诉你键此前是否存在。本文用并发状态更新场景说明如何识别首次写入,为什么不要用先 Load 再 Store 代替,以及怎样把返回值接入审计和保护逻辑。230 收藏 -
Go TLS 通过 tls.Config.NextProtos 声明 ALPN 应用层协议候选,再用 ConnectionState.NegotiatedProtocol 读取实际协商结果。本文说明客户端、服务端配置,以及匹配、空结果和不兼容边界。230 收藏 -
介绍 Go 用 io.Pipe 将 archive/tar 输出直接作为 HTTP 请求体的方法,说明背压、关闭顺序、错误传播和 Content-Length 边界。229 收藏 -
Go 1.23 的 slices.Chunk 能按固定上限惰性产出连续子切片。本文用批量写入场景说明最后一组、空输入、非法大小、错误返回和底层数组共享,并给出可观察的工程封装。229 收藏 -
讲清 Go sync.OnceValues 如何把初始化返回值与 error 一起缓存,说明并发调用、失败复用、panic 复用和不可重试边界。229 收藏 -
围绕 Go 子测试 t.Parallel 的调度边界,区分只读夹具与可变资源,给出每个子测试独立创建、清理和用 -race 重复验证的做法。228 收藏 -
解释 Go 泛型接收者参数与方法自身类型参数的区别,说明 List[E]、Pair[First, _] 和 Map[R] 的声明位置、参数映射与 Go 1.27 的接口边界。228 收藏 -
Go 执行跟踪能把 goroutine 的创建、运行、阻塞、唤醒、系统调用和 GC 事件放在同一时间语义下。本文通过一个尾延迟复盘示例,讲清 sched、sync、net、syscall 派生 profile 的用法,以及如何从事件栈定位调度等待与阻塞根因。228 收藏 -
Go huh 的可访问模式会放弃 Bubble Tea 的 TUI 重绘,改用更适合屏幕阅读器、CI 和脚本输入的普通终端提示。本文说明如何通过环境变量、Reader、Writer 和字段校验配置一份可复用的表单。228 收藏 -
Go io.Pipe 是没有内部缓冲的同步内存管道:PipeWriter.Write 会等到 PipeReader 消费数据后才完成。本文从生产者消费者串流出发,说明正常关闭、CloseWithError、读端取消与背压边界。228 收藏 -
介绍 Go 1.24+ 的 http.Server.Protocols,给出 HTTP/1、TLS HTTP/2、明文 HTTP/2 的显式配置、验证命令与兼容边界。227 收藏 -
Go 的 time.FixedZone 适合固定 UTC 偏移,time.LoadLocation 适合带 IANA 规则的地区时区。本文用创建、转换和格式化示例说明两者边界。227 收藏