Go教程
已收录文章:25篇
-
Golang · Go教程 | 1个月前 | 标准库 · 泛型 · 资源管理 · 迭代器 · Go教程 · 资源释放 iter.Seq range over function Go泛型迭代器 iter.PullGo 1.23 引入的 iter.Seq 让自定义序列可以直接配合 for range,但提前 break 与 iter.Pull 的 stop 处理决定了资源能否及时释放。本文用分页读取与筛选场景拆解 push 迭代器、pull 迭代器和停止边界。495 收藏
-
Go 1.26 放宽了 new 的参数限制,可以直接用 new(expr) 创建带初始值的指针。本文用可选字段、版本门槛和迁移验证说明它解决什么问题,以及什么时候不该急着改写。476 收藏
-
Go 1.23 引入的 unique 包可以把重复值映射到可比较的 Handle,但它不是无上限缓存。本文用字符串标签场景说明 unique.Make 的比较方式、Handle 生命周期和不适合使用的业务边界。471 收藏
-
Golang · Go教程 | 2个月前 | golang · sse · Go教程 · net/http · 接口设计 · HTTP Go SSE FLUSH 流式响应 ResponseControllerGo 的流式响应不是把多次 Write 拼起来就结束了。本文从 http.ResponseController.Flush 入手,做一个可验证的 SSE 示例,解释缓冲何时真正送达、HTTP/2 与代理会带来什么差异,以及客户端断开后如何让 goroutine 和 ticker 及时收口。463 收藏
-
编辑器保存配置时常用临时文件写入再重命名,Go 文件监听器看到的可能是多次事件而不是一次保存。本文用事件合并、稳定快照读取和重试窗口处理原子替换,避免读到半个文件,也避免漏掉真正的更新。439 收藏
-
Go SSE 处理器已经 Write,浏览器仍可能迟迟收不到。本文用 ResponseController.Flush、SetWriteDeadline、代理缓冲检查和断连测试拆解完整刷新链路。430 收藏
-
Golang · Go教程 | 2个月前 | HTTP · 连接池 · Go教程 · 性能排查 · net/http · Go HTTP客户端 连接复用 Transport httptrace Response.BodyGo HTTP 客户端请求量上来后,如果 Response.Body 没有按路径读取并关闭,或每次请求都新建 Transport,连接池就很难稳定复用。本文从一个连接数异常的服务场景出发,用 httptrace 验收复用结果,并给出响应体、Transport 参数和回归检查的落地写法。397 收藏
-
Go 服务做配置热加载时,直接改共享结构体很容易让请求读到半成品。本文用 atomic.Value 发布不可变快照,拆解更新、读取、校验和旧配置回收的边界,并给出可验证的回滚做法。390 收藏
-
用 Go 1.22 及以上版本的 net/http ServeMux 读取路径通配符,讲清 PathValue、通配符边界、路径转义和旧版本兼容处理。388 收藏
-
Go 的 sync 一次性初始化器适合把稳定结果封装成函数,但初始化失败也会被缓存。本文用配置加载和重试边界说明一次性函数、OnceFunc 与可重试初始化该怎么选。379 收藏
-
Go embed.FS 不只适合把模板打进二进制,也可以通过版本目录和启动校验降低模板发布风险。本文演示如何保留可回滚版本、验证文件完整性,并明确热切换不该越过的边界。379 收藏
-
调用 time.Ticker.Stop 后,程序仍可能处理一次已经进入通道的时间值。关键不在于 Stop 会不会清空通道,而在于退出信号、通道消费和任务收尾的顺序。本文用可运行示例拆开这个边界。363 收藏