Go语言技术文章
-
Go Timer.Reset 前处理旧事件的原因、Stop 与非阻塞 drain 的兼容写法,以及 Go 1.23 后同步定时器通道带来的版本边界。492 收藏 -
Go strings.CutPrefix 返回 found=false 时,优先检查前缀是否真的位于字符串开头、大小写和空格是否一致,并正确处理未匹配时原字符串会原样返回的规则。492 收藏 -
Go compress/flate 的 Write 可能暂存在压缩器内部,实时传输要在消息写入后调用 Flush,把当前数据和同步标记推到底层 writer;Close 只负责最终收尾。本文用长度帧、io.Pipe 和 io.ReadFull 说明发送、接收与刷新频率的边界。492 收藏 -
Go 的 os.File.ReadAt 不应只看 err。本文用固定长度读取场景拆解 n 与 err 的组合,说明完整读取、短读、负偏移和并发读取时该怎样判断与验证。491 收藏 -
Go 的 http.Transport.Clone 适合从一份稳定的连接配置派生客户端,但它不会替你合并请求级 Header,也不该被当成共享运行状态的复制器。本文从连接池、Header 隔离和并发改造三个边界拆开 Clone 的正确用法。491 收藏 -
Golang · Go教程 | 3星期前 | HTTP · go · sse · 流式响应 · Go EventSource SSE Server-Sent Events http.Flusher ResponseController
Go 写 SSE 接口时,事件格式、Flush 和连接关闭必须同时成立:消息用空行分隔,写入后显式刷新,并监听请求 Context 的取消信号。本文比较 http.Flusher 与 ResponseController.Flush,给出一段能处理写入错误和客户端断开的最小实现。491 收藏 -
Go net.SplitHostPort 遇到无端口、未加括号 IPv6 和空端口时分别怎样处理?本文用地址边界、错误类型、JoinHostPort 和输入预检说明正确写法。491 收藏 -
Golang · Go问答 | 3星期前 | JSON · Go问答 · Go encoding/json html/template JSON转义 JavaScript上下文 template.JS
Go html/template 输出 JSON 时出现 \u003c、\u0026 等转义字符,通常是模板针对 HTML 或 JavaScript 上下文的安全编码,并不代表 JSON 损坏。本文区分接口 JSON、模板对象和 script 内嵌数据的处理方式。491 收藏 -
Go maps.DeleteFunc 用回调返回值决定删除或保留,直接修改原 map。本文用状态清理示例说明条件写法、结果核对、nil map 与 clear 的边界。491 收藏 -
通过值接收者、指针接收者和 reflect.Type.NumMethod 的小实验,解释 Go 方法集如何影响接口实现判断,并给出编译期断言与边界检查方法。491 收藏 -
Golang · Go问答 | 1个月前 | net/http · Go问答 · 接口安全 · 版本迁移 · ServeMux · net/http 通配符 路由冲突 ServeMux Go 1.22 PathValue
Go 1.22 改造了 net/http.ServeMux 的模式语法和优先级,旧项目迁移时最容易踩到方法覆盖、通配符冲突和大括号语义变化。本文用最小代码验证匹配规则、冲突触发条件和上线前的兼容检查。490 收藏 -
在Go应用中可安全同时导入MySQL和Oracle数据库驱动,二者通过不同驱动名注册,互不冲突,sql.Open调用时指定对应驱动名即可建立独立连接。 在Go应用中可安全同时导入MySQL和Oracle数据库驱动,二者通过不同驱动名注册,互不冲突,`sql.Open`调用时指定对应驱动名即可建立独立490 收藏 -
围绕 Go 1.25 的 crypto.SignMessage 与 MessageSigner,拆解如何让签名封装同时兼容自带哈希和外部哈希的签名器,并验证回退路径与错误边界。490 收藏 -
Go 1.27 为 net/url 增加 URL.Clone 和 Values.Clone。本文从请求模板复用场景出发,说明浅复制为何会共享可变查询参数、如何分别复制 URL 与 Values,以及 RawQuery、Query 和 Encode 之间的边界。490 收藏 -
Golang · Go教程 | 3星期前 | 定时任务 · Context · 并发编程 · Go教程 · select time.Ticker context取消 goroutine退出 Go ticker
Go 定时循环阻塞在 ticker.C 时,应该把 ctx.Done 与 ticker.C 放进同一个 select,并把 context 继续传给业务处理;退出路径里调用 ticker.Stop,再等待 worker 收尾。本文区分 Stop、Reset 和重新创建,避免 goroutine 泄漏与错误的通道判断。490 收藏