<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>反射 on Tony Bai</title><link>https://tonybai.com/tags/%E5%8F%8D%E5%B0%84/</link><description>Recent content in 反射 on Tony Bai</description><generator>Hugo</generator><language>zh-cn</language><copyright>2004-2026 Tony Bai. 版权所有.</copyright><lastBuildDate>Tue, 02 Jun 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://tonybai.com/tags/%E5%8F%8D%E5%B0%84/index.xml" rel="self" type="application/rss+xml"/><item><title>再见样板代码！Go 官方新提案：函数一键转接口</title><link>https://tonybai.com/2026/06/02/no-more-boilerplate-go-proposal-function-to-interface-conversion/</link><pubDate>Tue, 02 Jun 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/06/02/no-more-boilerplate-go-proposal-function-to-interface-conversion/</guid><description>本文永久链接 – https://tonybai.com/2026/06/02/no-more-boilerplate-go-proposal-function-to-interface-conversion 大家好，我是Tony Bai。 在 Go 语言日常开发中，有一个设计几乎人人写过，但写多了又让人觉得极其繁琐、甚至有些“脱裤子放屁”的样板代码。 假设你需要一个只读数据的 io.Reader...</description></item><item><title>C++ 社区内部大讨论：新特性到底是“生产力革命”，还是“叠加的复杂性”？</title><link>https://tonybai.com/2026/04/15/cpp-community-debate-productivity-revolution-vs-complexity/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/04/15/cpp-community-debate-productivity-revolution-vs-complexity/</guid><description>本文永久链接 – https://tonybai.com/2026/04/15/cpp-community-debate-productivity-revolution-vs-complexity 大家好，我是Tony Bai。 如果你把编程语言比作工具，Go 是一把极简的手术刀，精准且克制；Rust 是一套带智能传感器的外骨骼装甲，严苛且安全。 而 C++ 呢？它更像是一把在过去四十年里不断被加...</description></item><item><title>当 Go 还在追求极简时，C++ 26 却又加了四大“史诗级”新特性</title><link>https://tonybai.com/2026/03/31/go-minimalism-vs-cpp26-epic-new-features/</link><pubDate>Tue, 31 Mar 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/03/31/go-minimalism-vs-cpp26-epic-new-features/</guid><description>本文永久链接 – https://tonybai.com/2026/03/31/go-minimalism-vs-cpp26-epic-new-features 大家好，我是Tony Bai。 在这个 Go、Zig 等“小而美”新语言颇受青睐的时代，如果你去技术社区里问一句：“C++ 这门语言怎么样？” 你大概率会得到一堆充满戏谑的回答：“太复杂了，别学”、“从入门到放弃”、“面试造火箭，工作拧螺...</description></item><item><title>Go 泛型落地 4 年后，终于要支持泛型方法了！</title><link>https://tonybai.com/2026/01/24/go-generics-finally-supports-generic-methods/</link><pubDate>Sat, 24 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/24/go-generics-finally-supports-generic-methods/</guid><description>本文永久链接 – https://tonybai.com/2026/01/24/go-generics-finally-supports-generic-methods 大家好，我是Tony Bai。 &amp;gt; “我们预计 Go 永远不会添加泛型方法。” —— Go FAQ (曾几何时) 对于许多期待 Go 泛型能像 C++ 或 Java 那样强大的开发者来说，这句话曾像一盆冷水。然而，就在最近，Go ...</description></item><item><title>Go 安全新提案：runtime/secret 能否终结密钥残留的噩梦？</title><link>https://tonybai.com/2025/12/05/proposal-runtime-secret/</link><pubDate>Fri, 05 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/05/proposal-runtime-secret/</guid><description>本文永久链接 – https://tonybai.com/2025/12/05/proposal-runtime-secret 大家好，我是Tony Bai。 “如果你的服务器被攻破，攻击者能否拿到内存中残留的私钥，进而解密过去两年的所有通信记录？” 这是一个让所有安全工程师夜不能寐的问题。为了防止这种情况，现代加密协议（如 TLS 1.3, WireGuard）都强调**前向保密 (Forwar...</description></item><item><title>Go 2025云原生与可观测年度报告：底层性能革新与生态固防</title><link>https://tonybai.com/2025/12/03/go-2025-cloud-native-observability-report/</link><pubDate>Wed, 03 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/03/go-2025-cloud-native-observability-report/</guid><description>本文永久链接 – https://tonybai.com/2025/12/03/go-2025-cloud-native-observability-report 大家好，我是Tony Bai。 **2025年，对于 Go 语言和云原生生态来说，是充满挑战与变革的一年。** 凭借务实的并发模型、极快的编译速度和极简的部署体验，Go 语言在过去十年间毫无争议地坐稳了现代云原生基础设施的“铁王座”。从...</description></item><item><title>告别懵圈：实战派 Gopher 的类型理论入门</title><link>https://tonybai.com/2025/10/30/type-theory-intro-for-gopher/</link><pubDate>Thu, 30 Oct 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/10/30/type-theory-intro-for-gopher/</guid><description>本文永久链接 – https://tonybai.com/2025/10/30/type-theory-intro-for-gopher 大家好，我是Tony Bai。 你是否曾有过这样的经历：在浏览一个关于 Go 泛型或接口设计的 GitHub issue 或技术提案时，评论区里的大佬们突然开始讨论 “Sum Type”、“Product Type”、“Parametric Polymorphi...</description></item><item><title>Go语言中的深拷贝：概念、实现与局限</title><link>https://tonybai.com/2024/09/28/understand-deep-copy-in-go/</link><pubDate>Sat, 28 Sep 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/09/28/understand-deep-copy-in-go/</guid><description>本文永久链接 – https://tonybai.com/2024/09/28/understand-deep-copy-in-go 前不久，在“Gopher部落”知识星球上回答了一个Gopher关于深拷贝(Deep Copy)的问题，让我感觉是时候探讨一下深拷贝技术了。 在日常开发工作中，深拷贝的使用频率相对较低，可能有80%的时间不需要使用深拷贝，只有在特定情况下才会遇到。这主要是因为大多数开...</description></item><item><title>Go未用代码消除与可执行文件瘦身</title><link>https://tonybai.com/2024/05/05/dead-code-elimination-and-executable-file-slimming-in-go/</link><pubDate>Sun, 05 May 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/05/05/dead-code-elimination-and-executable-file-slimming-in-go/</guid><description>本文永久链接 – https://tonybai.com/2024/05/05/dead-code-elimination-and-executable-file-slimming-in-go 在日常编写Go代码时，我们会编写很多包，也会在编写的包中引入了各种依赖包。在大型Go工程中，这些直接依赖和间接依赖的包数目可能会有几十个甚至上百个。依赖包有大有小，但通常我们不会使用到依赖包中的所有导出函数...</description></item><item><title>Service Weaver：以单体形式编码，以微服务形式部署</title><link>https://tonybai.com/2023/10/09/service-weaver-coding-in-monolithic-deploy-in-microservices/</link><pubDate>Mon, 09 Oct 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/10/09/service-weaver-coding-in-monolithic-deploy-in-microservices/</guid><description>本文永久链接 – https://tonybai.com/2023/10/09/service-weaver-coding-in-monolithic-deploy-in-microservices 分布式应用的主流架构模式演化为**微服务架构**已经有些年头了。微服务、DevOps、持续交付和容器技术(k8s)是构成最初云原生概念的核心要素。它们相生相拌，共同演进，并推动了云计算**全面进入云原...</description></item><item><title>使用testify包辅助Go测试指南</title><link>https://tonybai.com/2023/07/16/the-guide-of-go-testing-with-testify-package/</link><pubDate>Sun, 16 Jul 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/07/16/the-guide-of-go-testing-with-testify-package/</guid><description>本文永久链接 – https://tonybai.com/2023/07/16/the-guide-of-go-testing-with-testify-package 我虽然算不上Go标准库的“清教徒”，但在测试方面还多是基于标准库testing包以及go test框架的，除了需要mock的时候，基本上没有用过第三方的Go测试框架。我在《Go语言精进之路》一书中对Go测试组织的讲解也是基于Go ...</description></item><item><title>Go语言反射编程指南</title><link>https://tonybai.com/2023/06/04/reflection-programming-guide-in-go/</link><pubDate>Sun, 04 Jun 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/06/04/reflection-programming-guide-in-go/</guid><description>本文永久链接 – https://tonybai.com/2023/06/04/reflection-programming-guide-in-go 反射是一种编程语言的高级特性，它允许程序在运行时检视自身的结构和行为。通过反射，程序可以动态地获取类型(type)与值(value)等信息，并对它们进行操作，诸如修改字段、调用方法等，这使得程序具有更大的灵活性和可扩展性。 不过，反射虽然具有强大的功...</description></item><item><title>Go类型系统：有何与众不同</title><link>https://tonybai.com/2022/12/18/go-type-system/</link><pubDate>Sun, 18 Dec 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/12/18/go-type-system/</guid><description>本文永久链接 – https://tonybai.com/2022/12/18/go-type-system Go是一门强类型的静态编程语言。使用Go编程，我们的每一行代码几乎都离不开**类型**。因此，深入学习Go，我们首先要对Go的类型系统(type system)有一个全面和深入的认知。Go类型系统可以给予我们一个全局整体的视角，以帮助我们更好地学习和理解Go语言中那些具体的与类型相关的内容...</description></item><item><title>使用反射操作channel</title><link>https://tonybai.com/2022/11/15/using-reflect-to-manipulate-channels/</link><pubDate>Tue, 15 Nov 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/11/15/using-reflect-to-manipulate-channels/</guid><description>本文永久链接 – https://tonybai.com/2022/11/15/using-reflect-to-manipulate-channels * * * 今年教师节极客时间送给讲师4999 SVIP卡，一直没顾过来用，上周激活后在极客时间的众多精品课和专栏中徜徉，收获颇丰。尤其是在拜读鸟窝老师的《Go并发编程实战课》 后，get到一个以前从未用过的“技能点”：**使用reflect操作...</description></item><item><title>GoCN社区Go读书会第二期：《Go语言精进之路》</title><link>https://tonybai.com/2022/07/07/gocn-community-go-book-club-issue2-go-programming-from-beginner-to-master/</link><pubDate>Thu, 07 Jul 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/07/07/gocn-community-go-book-club-issue2-go-programming-from-beginner-to-master/</guid><description>本文永久链接 – https://tonybai.com/2022/07/07/gocn-community-go-book-club-issue2-go-programming-from-beginner-to-master 本文是2022年6月26日我在**GoCN社区的Go读书会第二期《Go语言精进之路》直播的文字稿**。本文对直播的内容做了重新整理与修订，供喜欢阅读文字的朋友们在收看直播后...</description></item><item><title>Go GC如何检测内存对象中是否包含指针</title><link>https://tonybai.com/2022/02/21/how-gc-detect-pointer-in-mem-obj/</link><pubDate>Mon, 21 Feb 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/02/21/how-gc-detect-pointer-in-mem-obj/</guid><description>本文永久链接 – https://tonybai.com/2022/02/21/how-gc-detect-pointer-in-mem-obj 众所周知，Go是带垃圾回收(GC)的编程语言，开发者通常不需要考虑对内存的管理，降低了心智负担。Go程序运行的时候，GC在背后默默辛劳地为开发者**“擦屁股”**：把无法reach到的内存对象定期地释放掉以备后续重用。 GC只关心**指针**，只要被扫描...</description></item><item><title>Ian Lance Taylor：Go泛型使用的一般准则</title><link>https://tonybai.com/2021/11/07/using-generics-in-go/</link><pubDate>Sun, 07 Nov 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/11/07/using-generics-in-go/</guid><description>本文永久链接 – https://tonybai.com/2021/11/07/using-generics-in-go 在近期Google Open Source Live的Go Day 2021环节，Go泛型的主要设计者Ian Lance Taylor做了Using Generics in Go的简短演讲(国内地址在这里)。这篇演讲的重点**不是即将于Go 1.18版本降临的Go泛型的语法细节...</description></item><item><title>一文告诉你如何用好uber开源的zap日志库</title><link>https://tonybai.com/2021/07/14/uber-zap-advanced-usage/</link><pubDate>Wed, 14 Jul 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/07/14/uber-zap-advanced-usage/</guid><description>本文永久链接 – https://tonybai.com/2021/07/14/uber-zap-advanced-usage 1. 引子 日志在后端系统中有着重要的地位，通过日志不仅可以直观看到程序的当前运行状态，更重要的是日志可以在程序发生问题时为开发人员提供线索。 在Go生态中，logrus可能是使用最多的Go日志库，它不仅提供结构化的日志，更重要的是与标准库log包在api层面兼容。在性能...</description></item><item><title>使用section.key的形式读取ini配置项</title><link>https://tonybai.com/2021/07/10/read-ini-config-item-by-passing-section-key/</link><pubDate>Sat, 10 Jul 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/07/10/read-ini-config-item-by-passing-section-key/</guid><description>本文永久链接 – https://tonybai.com/2021/07/10/read-ini-config-item-by-passing-section-key 配置文件读取是很多Go项目必备的功能，这方面社区提供的方案也相对成熟稳定。但之前写这部分代码时除了使用了针对不同配置文件格式（比如：ini、toml等）的驱动包之外，很少直接使用第三方包对读取出的配置项的值进行管理。于是我们就面对这...</description></item><item><title>使用reflect包在反射世界里读写各类型变量</title><link>https://tonybai.com/2021/04/19/variable-operation-using-reflection-in-go/</link><pubDate>Mon, 19 Apr 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/04/19/variable-operation-using-reflection-in-go/</guid><description>本文永久链接 – https://tonybai.com/2021/mm/dd/variable-operation-using-reflection-in-go Go在标准库中提供的reflect包让Go程序具备运行时的反射能力(reflection)，但这种反射能力也是一把“双刃剑”，它在解决一类特定问题方面具有优势，但也带来了逻辑不清晰、性能问题以及难于发现问题和调试等不足。不过从Go诞生伊...</description></item><item><title>Go语言的“黑暗角落”：盘点学习Go语言时遇到的那些陷阱[译]（第二部分）</title><link>https://tonybai.com/2021/03/29/darker-corners-of-go-part2/</link><pubDate>Mon, 29 Mar 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/03/29/darker-corners-of-go-part2/</guid><description>本文翻译自Rytis Bieliunas的文章《Darker Corners of Go》。 第一部分参见[《Go语言的“黑暗角落”：盘点学习Go语言时遇到的那些陷阱\[译\]（第一部分）》](https://tonybai.com/2021/03/29/darker-corners-of-go-part1) 7\. 字符串和字节数组 ------------ 1) Go中的字符串 Go字符串的内...</description></item><item><title>Go语言的“黑暗角落”：盘点学习Go语言时遇到的那些陷阱[译]（第一部分）</title><link>https://tonybai.com/2021/03/29/darker-corners-of-go-part1/</link><pubDate>Mon, 29 Mar 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/03/29/darker-corners-of-go-part1/</guid><description>本文翻译自Rytis Bieliunas的文章《Darker Corners of Go》。 &amp;gt; 译注：若干年前，Kyle Quest曾发过一篇名为“50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs”的文章，仿效著名的《C Traps and Pitfalls》编写了50条Go语言的陷阱与缺陷，一时在G...</description></item><item><title>TB一周萃选[第3期]</title><link>https://tonybai.com/2017/12/30/3rd-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</link><pubDate>Sat, 30 Dec 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/12/30/3rd-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</guid><description>本文是首发于个人微信公众号的文章**“TB一周萃选\[第3期\]”**的归档。 &amp;gt; 《岁旦》 &amp;gt; &amp;gt; &amp;gt; 宋伯仁 宋代诗人 &amp;gt; &amp;gt; 居间无贺客，早起只如常。桃版随人换，梅花隔岁香。 &amp;gt; 　　春风回笑语，云气卜丰穰。柏酒何劳劝，心平寿自长。 本期萃选是2017年的最后一期，也是迎接2018新年“承前启后”的一期。 对于现代中国人来说，公历新年又称为“元旦”。但稍有些历史常识的朋友都会知道：此“元旦”...</description></item><item><title>关于Go，你可能不注意的7件事</title><link>https://tonybai.com/2015/09/17/7-things-you-may-not-pay-attation-to-in-go/</link><pubDate>Thu, 17 Sep 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/09/17/7-things-you-may-not-pay-attation-to-in-go/</guid><description>Go以简洁著称，但简洁中不乏值得玩味的小细节。这些小细节不如goroutine、interface和channel那样&amp;#34;高大上&amp;#34;，&amp;#34;屌 丝&amp;#34;得可能不经常被人注意到，但它们却对理解Go语言有着重要的作用。这里想挑出一些和大家一起通过详实的例子来逐一展开和理解。本文内容较为基础，适合初学者，高手可飘过:) **一、源文件字符集****和字符集编码** Go源码文件默认采用Unicode字符集，Unic...</description></item><item><title>Go语言标准库概览</title><link>https://tonybai.com/2012/09/08/a-brief-tour-of-go-standard-library/</link><pubDate>Sat, 08 Sep 2012 00:00:00 +0800</pubDate><guid>https://tonybai.com/2012/09/08/a-brief-tour-of-go-standard-library/</guid><description>本文翻译自Dr.Dobb&amp;#39;s的&amp;#34;A Brief Tour of the Go Standard Library&amp;#34;一文。 **在Go语言五周系列教程的最后一部分中，我们将带领大家一起来浏览一下Go语言丰富的标准库。** Go标准库包含了大量包，提供了丰富广泛的功能特性。这里提供了概览仅仅是有选择性的且非常简单。本文发表后，标准库的内容还可能继续增加，因此 建议大家最好是通过在线查阅库API或使用go...</description></item><item><title>Go程序设计语言(三)</title><link>https://tonybai.com/2012/08/28/the-go-programming-language-tutorial-part3/</link><pubDate>Tue, 28 Aug 2012 00:00:00 +0800</pubDate><guid>https://tonybai.com/2012/08/28/the-go-programming-language-tutorial-part3/</guid><description>本文译自Rob Pike的Go语言PPT教程 – &amp;#34;The Go Programming Language Part3(updated June 2011)&amp;#34;。由于该教程的最新更新时间早于Go 1版本发布，因此该PPT中的一些内容与Go 1语言规范略有差异，到时我会在相应的地方做上注解。 第三部分大纲 ------ * 并发与通信 * Goroutines * 通道(Channel) * 并发相关...</description></item><item><title>Go程序设计语言(二)</title><link>https://tonybai.com/2012/08/27/the-go-programming-language-tutorial-part2/</link><pubDate>Mon, 27 Aug 2012 00:00:00 +0800</pubDate><guid>https://tonybai.com/2012/08/27/the-go-programming-language-tutorial-part2/</guid><description>重写工作方式正如字段一样。 type NamedPoint struct {     Point     name string } func (n \*NamedPoint) Abs() float64 {    return n.Point.Abs() \* 100. } n := &amp;amp;NamedPoint{Point{3, 4}, &amp;#34;Pythagoras&amp;#34;} fmt.Println(n.Abs...</description></item><item><title>动态代理再思考</title><link>https://tonybai.com/2005/03/25/thoughts-on-dynamic-proxy/</link><pubDate>Fri, 25 Mar 2005 00:00:00 +0800</pubDate><guid>https://tonybai.com/2005/03/25/thoughts-on-dynamic-proxy/</guid><description>看了透明发表在《程序员》杂志2005年第一期上的“动态代理的前世今生”，让我不仅了解了“动态代理”这门技术，更让我知道了一段Java技术的发展史。带着对Rickard Oberg的钦佩之情，怀着对Rod Johnson敬仰之义我踏上了动态代理再思考之路。 **\[****关键词\]** 代理(proxy) 基础设施(infrastructure) 业务组件(business component) ...</description></item></channel></rss>