2025-09-07 Go Go 并发控制:sync.Pool 详解 sync.Pool 是 Go 并发原语中用于对象池化的工具,主要用于缓存和复用临时对象,以减少内存分配和垃圾回收的压力。 本文将带大家一起来深入探讨 sync.Pool,包括使用示例和源码解读,让你彻底理解 sync.Pool 的设计。 阅读全文…
2025-09-05 Go 使用 testing/synctest 测试并发代码 大家好,我是江湖十年。 Go 1.25 发布有段时间了,随之带来了正式版本的并发测试包 testing/synctest,今天就来通过这篇文章向大家介绍一下在 Go 中如何测试并发代码,本文翻译自 Go 官方博客。 阅读全文…
2025-08-22 Go Go 1.25 终于迎来了容器感知 GOMAXPROCS 大家好,我是江湖十年。 2025 年 8 月 12 日 Go 1.25 终于正式发布,随之一起带来的重大利好是 Go 1.25 包含新的容器感知 GOMAXPROCS 默认值。我曾在《使用 Uber automaxprocs 正确设置 Go 程序线程数》一文中讲解过 Go 语言一直存在的默认线程数问题,如今终于被解决了。我本来打算最近写一篇文章介绍一下,不过就在昨天,Go 官方博客抢先一步,专门写了一篇文章《Container-aware GOMAXPROCS》来专门介绍 Go 1.25 带来的 GOMAXPROCS 默认值变化。那我就不再班门弄斧自己写文章了,本文是对官方博客的中文翻译。 阅读全文…
2025-08-21 Go Go 还是 Golang?可能你一直都搞错了! 大家好,我是江湖十年。 今天来聊一个对于广大 Gopher 来说既熟悉又陌生的话题,Go 语言的名字到底是叫 Go 还是叫 Golang?这是一个很容易被忽视或者不被开发者所重视的问题,也许你从未考虑过这个问题,但我认为这其实是一个比较严肃的话题。 我们先从 Go 语言的诞生开始讲起。 阅读全文…
2025-08-11 Go 在 Go 中使用 dyno 包处理动态对象 我在《Go 语言中 YAML to JSON 踩坑笔记》一文中提到了使用 dyno 包来解决 json.Marshal 时遇到不支持的 map[interface{}]interface{} 类型报错的问题。本文就来通过源码的形式为大家详解一下 dyno 包的原理。 阅读全文…
2025-08-03 Go Go 语言中 YAML to JSON 踩坑笔记 最近在搬砖的过程中遇到了一个在 Go 代码中 YAML 转 JSON 引发报错的小问题,随手记录一下。场景是这样的,我实现了一个功能,支持用户上传 YAML/JSON 格式的文档,为了方便,我会将文档全部转为 JSON 格式再来统一处理。平时经常操作 YAML,也经常操作 JSON,但二者互转的场景不怎么会遇到,所以因为一时疏忽,就遇到了问题。 阅读全文…
2025-07-27 Go Go 项目中的 doc.go 文件是干嘛的? 作为广大 Gopher 中的一员,你一定在 Go 项目中写过或者见过一个叫 doc.go 的文件,不知道你是否好奇这个文件到底是干嘛的,它有哪些作用?本文就来介绍一下 doc.go 这个文件。 阅读全文…
2025-07-17 Go 万字长文:彻底掌握 Go 1.23 中的迭代器 本文带大家一起来深入探究一下 Go 1.23 中发布的迭代器特性,这是一篇迟来的文章,再不写这篇文章 Go 1.25 就发布了 :),Go 1.25 预计将于 2025 年 8 月发布。 阅读全文…
2025-07-05 Agent 记一次在 K8s 环境中排查 Agent 选择多个 MCP 后无结果返回问题 本文完整的记录了我在遇到 Agent 选择多个 MCP 后进行聊天,无法获得返回结果的一次排查案例,以此来提醒自己不要再犯愚蠢的错误。 阅读全文…
2025-06-21 Go Go 官方推荐的 Go 项目文件组织方式 刚开始接触 Go 的开发者大概都会遇到一个问题:我该如何组织我的 Go 项目?这种问题当然没有标准答案,不过 Go 官方下场,给了广大 Gopher 一个推荐模板。本文就来带大家一起来学习一下 Go 官方对于 Go 项目布局的指导原则。 本文以 Go 官方博客「Organizing a Go module」为基石进行讲解。 阅读全文…