Go语言技术文章
-
本文实现一个源阶段、转换阶段、过滤阶段和汇聚端组成的 Go 数据管道。每个阶段创建、发送并关闭自己的输出 Channel,下游只接收;同时用 context 处理提前结束,并说明多 worker 阶段如何等待全部发送完成后单点关闭。492 收藏 -
通过 money 模块与 order 服务的小项目,演示如何拆分 Go 内部模块、用 go.work 本地联调、为子目录模块创建语义化版本标签,并用 v1 兼容规则与 /v2 路径维护清晰依赖边界。492 收藏 -
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 收藏 -
讲清 Go time.Ticker 的停止语义、context 取消、慢任务丢 tick 与服务关闭等待,给出可直接改造的周期任务循环。491 收藏 -
Go 代理要把上游响应逐块交给客户端时,可用 ResponseController 统一调用 Flush,并处理包装器、客户端断开、HTTP/2 与反向代理缓冲等边界。491 收藏 -
go list -m all 展示的是模块构建列表,不等于某个目标包实际编译进二进制的全部依赖。本文从模块模式、vendor、workspace、构建条件和二进制 BuildInfo 五层排查版本不一致。490 收藏 -
panicreturn 不是 Go 内置关键字,而是用命名返回值、defer 和 recover 在函数边界内把可隔离的 panic 转成 error。本文说明边界选择、goroutine 保护、资源清理和测试重点。490 收藏 -
Go encoding/xml 中,嵌套类型的 XMLName 显式标签与外层字段标签不一致会触发名称冲突。本文用固定根节点和可复用子节点两个写法说明如何稳定解码,并梳理命名空间、大小写和 Marshal 的边界。490 收藏 -
unsafe.String 只把一段连续字节按指定长度解释为字符串,不会替你检查对象类型、所有权或 UTF-8。本文从 []byte 的正确入口讲清指针、长度、可修改性和生命周期边界,并给出该复制时的判断方式。490 收藏 -
Go 解析 X.509 证书时,未知扩展应从 Certificate.Extensions 读取原始 OID、Critical 和 Value;重新生成证书则使用 ExtraExtensions,并单独处理未知关键扩展。489 收藏 -
Go maps.Equal 比较包含 NaN 的映射时返回 false,是因为它按 == 比较值,而 NaN 不等于自身。本文解释值与键的边界,并给出 maps.EqualFunc 的业务比较写法。489 收藏 -
Go 的 File.Sync 只针对已经打开的文件描述符提交数据和文件元数据,临时文件 Rename 后的目录项仍属于父目录。本文拆分三层持久化边界,并给出 Go 的安全替换写法与平台注意事项。489 收藏 -
用 Go os/signal 和 NotifyContext 组织优雅停止:让取消信号传到后台 goroutine,等待资源收尾,并正确释放通知注册,避免服务退出后的 goroutine 泄漏。489 收藏