2025年十一月月 发布的文章

Go 泛型再进化:移除类型参数的循环引用限制

本文永久链接 – https://tonybai.com/2025/11/19/proposal-remove-cycle-restriction-for-type-parameters

大家好,我是Tony Bai。

自 Go 1.18 引入泛型以来,Gopher 们一直在探索其能力的边界。然而,在这片新大陆上,一直存在着一个由语言规范施加的限制,它禁止了一种强大而富有表达力的泛型模式的实现。

这个限制就是:“在一个泛型类型 T 的类型参数列表中,其约束不能直接或间接地引用 T 自身。

近日,由 Go 核心团队的 Robert Griesemer 亲自发起的一个关联提案(NO.75883),旨在移除这个约束。在经过一系列的编译器修复和深度讨论后,最终被标记为 likely accept。这意味着,Go 语言规范中关于泛型“类型参数循环引用”的这条限制,即将在未来的版本中(最早Go 1.26)被正式移除

这次微小的语法调整,将为 Go 社区解锁一种被称为“奇异递归模板模式” (Curiously Recurring Template Pattern, CRTP) 的强大能力,并对我们如何设计类型安全的泛型 API 产生深远影响。

在这篇文章中,我们将深入探讨这一重要变化,剖析其背后的技术原理、核心应用场景等。

被束缚的表达力——这条限制是什么?

让我们从一个 Griesemer 提出的、看似合理的代码开始,它在当前版本(比如Go 1.25.4)的 Go 中是非法的:

// 目标:定义一个“可比较”的元素接口
// E 应该是一个实现了 Element[E] 接口的类型
type Element[E Element[E]] interface {
    Less(other E) bool
}

// 编译器报错:invalid recursive type: Element refers to itself
// (无效的递归类型)

这段代码的意图非常清晰:我们想定义一个 Element 接口,它有一个 Less 方法,该方法接收的参数 other,其类型 E 必须和实现这个接口的类型是同一个类型。这是一种“自引用”或“递归”的类型约束。

例如,如果我们有一个 Int 类型:

type Int int

// 我们希望 Less 的参数是 Int,而不是其他实现了 Element 接口的类型
func (i Int) Less(other Int) bool {
    return i < other
}

Element[E Element[E]] 这种约束,正是为了在编译期强制执行这种“同类型比较”的保证。

然而,由于 Go 1.18 规范中的明确限制,这种优雅的、类型安全的表达方式,在过去几年中一直是一条死路。

为何需要它?—— CRTP 模式的威力

社区的讨论为我们揭示了这种“循环类型约束”的几个核心应用场景。它们都与 C++ 中的 CRTP(Curiously Recurring Template Pattern) 模式异曲同工。

Robert Griesemer 在提案中给出了一个经典的例子:如何用泛型来模拟一个数学上的“环”(Ring)。

// 未来将合法的代码
type Ring[T Ring[T]] interface {
    Zero() T
    One() T
    Add(y T) T
    Mul(y T) T
}

Ring[T Ring[T]] 这个约束,确保了 Add 和 Mul 等方法的参数和返回值,永远是实现该接口的具体类型 T,而不是某个其他也实现了 Ring 接口的无关类型。它在编译期就锁定了操作的类型闭环

Prometheus 的开发者 Bryan Boreham 在 GopherCon 2023 的演讲中,也遇到了同样的问题。在实现一个通用的 K-路归并树时,他希望定义一个通用的 Value 接口,让放入树的元素自带类型安全的 Less 方法,而不是依赖外部传入的闭包。这不仅能让 API 更简洁,更重要的是,直接的方法调用比闭包调用更容易被编译器内联,从而带来显著的性能提升。

从“不可能”到“可能”——幕后的编译器修复

这个看似简单的语法限制,为何在 Go 1.18 中被加入,又为何现在可以被移除了?

答案隐藏在编译器的类型检查循环检测机制中。在早期,Go 的类型检查器为了防止无限递归(例如 type T T),采用了一套相对保守的循环检测算法。当它遇到 type T[P T[P]] 这种通过类型参数列表形成的“循环依赖”时,会直接将其误判为非法的无限递归。

NO.68162 issue的修复中,Go 团队改进了类型检查器的算法。新的算法能够更智能地区分有害的无限递归(如 type T *T)和无害的、可以在实例化时“展开”的泛型递归约束

深度剖析——Griesemer 的“两步实例化”解释

在 #75883 提案的讨论中,一个极其深刻的问题被提出:type T[P T[P]] int 这样的定义,是否会导致无法解决的循环?Robert Griesemer 对此给出了一个权威的、清晰的解释,揭示了 Go 泛型实例化的核心机制。

他指出,Go 的泛型实例化,严格遵循两个步骤

  1. 第一步:类型替换 (Substitution)
    编译器首先会简单地、机械地将调用方提供的类型实参 (type argument)(例如 int),替换掉泛型定义中的类型形参 (type parameter)(例如 P)。

    // 原始定义
    type T[P T[P]] int
    
    // 假设我们尝试实例化 T[int]
    // 第一步替换后,我们得到一个临时的、假想的定义:
    type T[int T[int]] int
    
  2. 第二步:约束校验 (Verification)
    在替换完成后,编译器才会去检查:被替换的类型实参 (int),是否满足它所对应的类型形参的约束 (T[int])?

    在这个例子中,约束 T[int] 是一个具名非接口类型。根据 Go 的类型规则,只有 T[int] 自身才满足这个约束。而我们传入的 int 显然不是 T[int]。因此,约束校验失败,T[int] 是一次非法的实例化。

这个“两步走”的过程,清晰地证明了这种递归约束并不会导致无限循环,因为类型检查总能在有限的步骤内终止。正是基于这个坚实的理论基础,Go 团队才有信心去移除最初的限制。

一个完整的带有循环引用的类型参数的示例

让我们将 Griesemer 提出的 Ring 示例,扩展为一个完整的、在未来版本的 Go 中将可以运行的程序:

package main

import "fmt"

// 1. 定义一个递归约束的泛型接口
type Ring[T Ring[T]] interface {
    Zero() T
    One() T
    Add(y T) T
    Mul(y T) T
}

// 2. 实现该接口的具体类型
type MyInt int

func (x MyInt) Zero() MyInt       { return 0 }
func (x MyInt) One() MyInt        { return 1 }
func (x MyInt) Add(y MyInt) MyInt { return x + y }
func (x MyInt) Mul(y MyInt) MyInt { return x * y }

// 3. 编写一个操作该泛型接口的通用算法
// scale computes x + y*s
func scale[R Ring[R]](x, y, s R) R {
    return x.Add(y.Mul(s))
}

func main() {
    var a, b, c MyInt = 2, 3, 5
    // 4. 调用通用算法,编译器会检查 MyInt 是否满足 Ring[MyInt] 约束
    result := scale(a, b, c)
    fmt.Printf("scale(2, 3, 5) = %d\n", result) // 预期输出: scale(2, 3, 5) = 17
}

让我们剖析一下scale 调用时的实例化过程:

main 函数中对 scale(a, b, c) 的调用,完美地展示了“两步实例化”机制是如何工作的:

  1. 第一步:类型推断与替换 (Type Inference & Substitution)

    • 编译器观察到 scale 函数的调用参数 a, b, c 的类型都是 MyInt。
    • 通过类型推断,编译器确定类型实参 (type argument) 就是 MyInt。
    • 它将 MyInt 替换掉 scale 函数签名中的类型形参 (type parameter) R。
    • 此时,scale 函数的约束被临时实例化为 Ring[MyInt]。
  2. 第二步:约束校验 (Verification)

    • 现在,编译器需要校验:类型实参 MyInt 是否满足其约束 Ring[MyInt]?
    • 要满足 Ring[MyInt],MyInt 必须实现 Ring[MyInt] 接口中定义的所有方法。让我们来逐一检查:
      • Zero() MyInt:MyInt 实现了 Zero() MyInt。满足。
      • One() MyInt:MyInt 实现了 One() MyInt。满足。
      • Add(y MyInt) MyInt:MyInt 实现了 Add(y MyInt) MyInt。满足。
      • Mul(y MyInt) MyInt:MyInt 实现了 Mul(y MyInt) MyInt。满足。
    • 由于 MyInt 完整地实现了 Ring[MyInt] 接口,约束校验通过
    • 编译器确认此次泛型函数调用是合法的,并生成相应的代码。

这个过程与我们在第四章中看到的那个非法的 T[P T[P]] int 示例形成了鲜明对比。在这里,MyInt 是一个接口实现者,它能够满足由其自身参与定义的接口约束,从而构成了一个有效的、有穷的递归

小结:Go 泛型的一次重要进化

移除泛型类型参数的循环引用限制,对于 Go 语言而言,远不止是修复了一个编译器 bug 或减少了一条规则。

  • 对开发者而言:它解锁了一种全新的、更强大、更类型安全的泛型编程模式。我们将能够构建出表达力更强、性能更高、API 更简洁的通用库和数据结构。
  • 对语言本身而言:这是 Go 泛型走向成熟的一次重要进化。它表明 Go 团队正在持续地、审慎地打磨泛型这一新特性,使其在保持 Go 哲学的基础上,逐步释放其全部潜能。

不过,CRTP 模式对于不熟悉的开发者来说,也确实存在一定的认知门槛

目前,该cl已经合并到主线,大家可以在go playground的go dev branch版本下体验。

资料链接:https://github.com/golang/go/issues/75883


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


想系统学习Go,构建扎实的知识体系?

我的新书《Go语言第一课》是你的首选。源自2.4万人好评的极客时间专栏,内容全面升级,同步至Go 1.24。首发期有专属五折优惠,不到40元即可入手,扫码即可拥有这本300页的Go语言入门宝典,即刻开启你的Go语言高效学习之旅!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

Go 在 Web3 的统治力:2025 年架构与生态综述

本文永久链接 – https://tonybai.com/2025/11/18/go-web3-dominance-overview-2025

大家好,我是Tony Bai。

截至 2025 年末,Go 语言 (Golang) 作为基础设施主导语言 (Infrastructure Dominance Language),在 Web3 生态系统中的地位已然根深蒂固。Go 的架构特性——特别是其内置的并发模型、简单的语法以及继承自云基础设施领域的强大工具链——使其对于运行在链下或核心网络层的、任务关键型、高吞吐量的系统而言,是不可或缺的。

本文旨在系统性地剖析 Go 语言在 Web3 领域的“统治力”从何而来,将向何处去。我们的核心发现证实了 Go 在几个关键领域不可动摇的地位:

  1. 客户端弹性: Go 支撑了以太坊的主要客户端 go-ethereum (Geth),为这个最大的智能合约平台带来了制度性的稳定性。
  2. 应用链架构: Go 通过 Cosmos SDK 主导了模块化和主权链的范式,使其在互操作性的未来中占据中心位置。
  3. 中间件编排: Go 是 API 网关、交易中继器、预言机(Oracle)节点(如 Chainlink, The Graph)以及索引服务的核心“引擎”。

尽管由于其有保证的内存安全性,Rust 在新型高性能 Layer 1 (L1) 运行时的开发中对 Go 构成了挑战,但 Go 卓越的开发速度、成熟的分布式系统库以及更低的企业采用门槛,巩固了其在水平扩展和快速部署方面的持续必要性。

1. 引言:Go 在去中心化系统中的演进

1.1 从 Web1 到 Web3:一个去中心化的演进

在深入探讨 Go 的角色之前,理解 Web3 的历史背景至关重要。互联网的演进大致可分为三个阶段:

  • Web 1.0 (只读网络):以静态 HTML 页面为主,用户主要是信息的消费者。
  • Web 2.0 (读写网络):以社交媒体和用户生成内容为标志,但用户的身份和数据都掌握在中心化平台手中。
  • Web 3.0 (读-写-拥有网络):旨在通过区块链技术,将数据和数字资产的所有权归还给用户。


图来自https://chain.link/education/web3

Go 语言的崛起,恰好与 Web3 从概念走向大规模基础设施建设的阶段相吻合,并在其中扮演了至关重要的角色。

1.2 Go 在区块链 1.0 和 2.0 中的历史足迹

  • 区块链 1.0 (比特币时代):在以比特币为代表的、专注于“点对点电子现金”的时代,Go 并非中心。其参考实现 Bitcoin Core 是用 C++ 编写的。

  • 区块链 2.0 (以太坊时代):以太坊引入了智能合约和通用计算能力,这要求高度可用且稳健的客户端软件。Go 的关键切入点是 go-ethereum (Geth) 项目。Geth 迅速成为以太坊客户端实现的标杆,并凭借其持续的开发势头和稳定性,成为了事实上的标准实现。这一历史基础巩固了 Go 作为以太坊生态系统核心骨干主要工程语言的地位,提供了一层从其早期成功中继承而来的制度性信任与稳定性

2. 剖析“统治力”:我们从哪里寻找答案?

要理解 Go 为何能在 Web3 基础设施领域占据如此重要的地位,我们不能仅仅停留在“Go 很棒”这样的表面结论上。我们需要像剥洋葱一样,层层深入,从不同的维度寻找答案。

在本文的分析中,我们将从三个关键视角出发,来共同构建一幅关于 Go 在 Web3 中角色的全景图:

  1. 审视核心项目与定位 (协议分析):我们将深入到 Web3 世界的“引擎室”,去考察那些用 Go 构建的、具有里程碑意义的核心项目(如以太坊的 Geth 和 Cosmos SDK)。通过分析它们在生态系统中所扮演的角色和解决的核心问题,我们可以找到 Go 语言特性与 Web3 基础设施需求之间最直接的联系。

  2. 审视竞争与权衡 (竞争格局):任何技术选型都是一场权衡。我们将把 Go 放在聚光灯下,与它在系统编程领域最强大的竞争对手——Rust——进行一次坦诚的对比。通过分析它们各自的优势(Go 的并发与开发速度 vs. Rust 的内存安全与绝对性能),我们可以更清晰地理解 Go 在 Web3 生态中所占据的、不可替代的“生态位”。

  3. 放眼未来与趋势 (市场情报):技术的发展离不开市场的驱动。我们将目光投向 Web3 中增长最快的新兴领域,如 DePIN(去中心化物理基础设施网络)和 AI 与 DeFi 的融合,并评估 Go 在这些未来战场上的战略价值和相关性。

通过这三个维度的交叉验证,我们希望能为你揭示 Go 在 Web3 统治力背后,那些不为人知的、深层次的原因。

3. 统治力的基石:Geth 的制度性信任与 Cosmos 的生态扩张

3.1 核心客户端弹性与制度性信任

以太坊网络的稳定性直接取决于其客户端实现的弹性,其中 Geth 仍然至关重要。目前构建 Geth 需要 Go 1.23 或更高版本。Geth 项目提供的全面工具套件,展示了 Go 在管理和维护以太坊虚拟状态方面的深度和活跃角色。

Geth 的持续成功,为 Go 语言带来了高度的制度性信任。随着机构投资者和受监管实体进入加密货币领域,依赖一种成熟的、企业友好的、驱动核心 L1 客户端的语言(Go)成为了一项关键的战略选择。

背景知识:区块链分层 (Layers)

为了理解 Go 的生态位,我们需要了解区块链的分层结构:

  • Layer 1 (L1):基础层,即区块链本身(如以太坊、比特币)。它负责网络的安全和最终的交易确认,但通常速度较慢、费用较高。
  • Layer 2 (L2):构建在 L1 之上的扩展层(如 Arbitrum, Optimism)。它们通过将大部分计算和交易移至链下处理,来提高速度、降低费用,同时将其安全性锚定在 L1 上。
  • Layer 3 (L3):应用层,通常构建在 L2 之上,为特定应用提供更定制化的功能。

尽管 L2 现在承载了以太坊大部分的经济活动,但连接这些 L2 回到 L1 安全层的基础通信、排序和桥接基础设施,频繁地依赖于 Go。这是因为 Go 在处理可靠的跨层通信所需的高吞吐量网络编排方面非常有效。

3.2 Cosmos 生态系统:Go 的应用链策略

Go 在通过 Cosmos 生态系统开创“区块链互联网”愿景方面,找到了第二个同样关键的专业领域。

Cosmos SDK 是一个完全用 Go 编写的开源框架,使开发者能够构建自定义的、主权的“应用链”(app-chains)。Go 为 Cosmos 生态系统提供了模块化的骨干,特别是至关重要的跨链通信 (Inter-Blockchain Communication, IBC) 模块。随着行业对互操作性的需求日益增长,Go 已然成为在 EVM 环境之外,扩展模块化、多链生态系统的主要载体。

3.3 成熟的工具链与企业并发之桥

Go 从云和分布式系统架构成熟过程中(以 Docker 和 etcd 等项目为代表)锻造出的、成熟而广泛的生态系统中获益匪浅。这为 Web3 项目提供了稳健的、企业级的链下后端需求工具。

Go 的简单并发模型和可读语法,为从传统企业后端转向专业 Web3 基础设施角色的开发者,创造了摩擦力最低的桥梁。企业可以无缝地将在通用 IT 领域积累的 Go 人才和代码库,转移到专业的 Web3 中间件、内部节点和 API 层,从而极大地加速了机构的采用。

4. 统治力的体现:Go 在网络层、中间件与新兴领域的架构优势

4.1 基础设施:网络节点层

Go 在 Web3 中的根本优势在于其对 P2P 网络通信的稳健和高效处理,这主要归功于其原生的并发特性——Goroutines。在 Geth 中,服务器为每个连接的对等节点创建一个独立的、廉价的 goroutine,并发地处理所有网络交互,从而确保了高吞吐量和稳定性。

架构权衡:Go 的自动内存管理(垃圾回收, GC)简化了开发,但也可能引入延迟。Go 团队持续专注于 GC 的优化,例如 Go 1.25 中引入的 “Green Tea” 算法,就是为了在高并发应用中提供可预测的、低延迟的 GC。Go 与 Rust 的选择,通常是可预测的吞吐量 (Go) 与绝对的峰值速度 (Rust) 之间的权衡。

4.2 中间件:API 网关与数据编排

Go 是所有关键链下基础设施久经考验的“引擎”,包括 API 平台、交易中继器、监控代理等。特别是对于预言机 (Oracle) 和索引 (Indexing) 基础设施,Go 的能力至关重要:

  • The Graph: 其索引基础设施的核心组件,使用非常适合 Go 架构的分布式系统范式构建。
  • Chainlink: 其节点在其网络栈和数据处理管道中广泛使用 Go,以实现与外部数据源的高度并发交互。

AI-DeFi 的交汇点

一个主要趋势是将人工智能(AI)积极整合到 DeFi 中。这些 AI 智能体需要一个高并发的“大脑”来处理实时数据流并执行交易。Go 在数据编排方面的既有主导地位,战略性地使其成为托管和管理这些高频 AI 智能体的主要运行时环境。

4.3 新兴应用:DePIN

去中心化物理基础设施网络 (DePIN) 领域预计将经历急剧增长。DePIN 的架构要求——高效的网络通信、大规模分布式节点的管理、简化的运维——与 Go 语言在云原生领域(Kubernetes)所解决的问题几乎完全相同。因此,预计 Go 将成为 DePIN 项目复杂网络层的默认语言。

5. 竞争格局:Go vs. 竞争语言

5.1 Go vs. Rust:基础设施之争

Go 与 Rust 的竞争,定义了 Web3 基础设施的架构决策。这不是“好”与“坏”的选择,而是基于关键需求的抉择:部署速度和简单性 (Go) vs. 绝对的安全和性能 (Rust)

这场竞争导致了明确的市场细分:

  • Rust 正在L1 核心运行时开发领域获得主导地位,在这些领域,有保证的内存安全是不可协商的。
  • Go 则在L1/L2 客户端维护和 L2/L3 中间件领域保持主导地位。

最具战略优势的技术栈,会结合使用这两种语言:Rust 用于最深层的、安全关键的层面,而 Go 用于更广泛的、提供可扩展性和可访问性的高并发分布式系统封装层。

表1:Go vs. Rust 架构权衡对比分析

5.2 Go vs. Solidity/EVM 语言

Go 和 Solidity 并非竞争关系,它们在技术栈中占据不同的功能空间。Solidity 是用于创建链上逻辑的专门语言。Go 的价值在于,通过 Geth 生态系统中的 abigen 等工具,能够生成类型安全的 Go 绑定,实现 Go 链下服务与已部署合约逻辑之间稳健、安全的通信。

6. 结论与战略展望

6.1 “统治力”的根源与未来

Go 在 Web3 生态系统中的地位,由基础设施领域的深耕与战略性扩张所定义。它的“统治力”,并非偶然,而是其核心架构优势——成熟的高吞吐量并发模型和企业友好的简单性——在 Web3 场景下的必然体现。

在核心以太坊客户端维护方面的持续投入,以及在模块化应用链范式(Cosmos SDK)中对 Go 的战略选择,都展示了其韧性。此外,其在 DePIN 和 AI 编排等新兴高增长领域的直接适用性,保证了其持续的相关性。对于优先考虑水平可扩展性、快速部署和稳定网络运营的工程师来说,Go 仍然是最务实的选择。

6.2 技术选型战略性建议 (2026+)

  • 优先选择 Go 以实现连接与扩展: 所有 Web3 基础设施层,如 API 网关、数据索引服务、交易中继器等,应继续锚定在 Go 上。
  • 拥抱架构细分: 认识到最优的技术栈可能是混合的。构建新 L1 核心运行时应审慎评估 Rust,而外部工具和网络层应默认选择 Go。
  • 利用 Go 开展应用链计划: 对于希望推出自定义主权链的企业,用 Go 编写的 Cosmos SDK 提供了最快、最稳健的路径。
  • 缓解 GC 延迟: 在低延迟环境中运行的 Go 服务,利用诸如 Go 1.25+ 改进的 GC 功能,并采用全面的性能分析来最小化延迟峰值。

表2:Go 在 Web3 子领域的预测势头 (2026 – 2028)

6.3 关于 Go 长期轨迹的最终预测

Go 在去中心化经济中的长期轨迹,并非由赢得 L1 共识层之战来定义,而是由主导集成和扩展层来定义。随着 Web3 范式进一步向模块化、应用特定 rollups 以及物理基础设施的整合转变,对高吞吐量、并发和易于部署的连接组织的需求将加剧。Go 仍将是分布式系统工程师的默认、务实选择,确保其在未来很长一段时间内,作为 Web3 基础设施关键基础的持续地位。

注:Rollup 是一种 Layer 2 扩展技术。它的基本工作原理是将成百上千笔交易在链下 (off-chain) 执行和“打包”(roll up),然后只将一个压缩后的、证明这些交易有效性的数据摘要,提交回到底层的 Layer 1(如以太坊)上。这样做极大地降低了 L1 的负担,从而实现了更快、更便宜的交易。

注:本文借助AI大模型的联网搜索获取和整理相关最新资料(见参考资料列表)。

参考资料

  1. Go implementation of the Ethereum protocol - GitHub, https://github.com/ethereum/go-ethereum
  2. Exploring Cosmos SDK for Web3 Development, https://hashtagweb3.com/exploring-cosmos-sdk-for-web3-development
  3. The Future of Blockchain: Trends We Expect in 2025 and Beyond, https://londonblockchain.net/blog/blockchain-in-action/the-future-of-blockchain-trends-we-expect-in-2025-and-beyond/
  4. Best Web3 Programming Languages in 2025 - Alchemy, https://www.alchemy.com/overviews/web3-programming-languages
  5. Chainlink Quarterly Review: Q3 2025, https://blog.chain.link/quarterly-review-q3-2025/
  6. Edge & Node’s October / November 2025 Update - The Graph Forum, https://forum.thegraph.com/t/edge-nodes-october-november-2025-update/6752
  7. Rust vs Go — What to choose while developing a blockchain app - Litslink, https://litslink.com/blog/rust-vs-go-for-blockchain
  8. Rust vs Go: Which one to choose in 2025 | The RustRover Blog, https://blog.jetbrains.com/rust/2025/06/12/rust-vs-go/
  9. avelino/awesome-go: A curated list of awesome Go frameworks, libraries and software - GitHub, https://github.com/avelino/awesome-go
  10. State of Crypto 2025: The year crypto went mainstream, https://a16zcrypto.com/posts/article/state-of-crypto-report-2025/
  11. What are the key DeFi trends to look out for in Q4 2025? - AMBCrypto, https://eng.ambcrypto.com/what-are-the-key-defi-trends-to-look-out-for-in-q4-2025/
  12. What is the history of blockchain? - Avalanche Support, https://support.avax.network/en/articles/4587339-what-is-the-history-of-blockchain
  13. Blockchain 1.0 Definition - CoinMarketCap, https://coinmarketcap.com/academy/glossary/blockchain-1-0
  14. Chapter 3: Ethereum Clients · GitBook, https://cypherpunks-core.github.io/ethereumbook/03clients.html
  15. Why Golang was chosen to implement ethereum protocol?, https://ethereum.stackexchange.com/questions/155183/why-golang-was-chosen-to-implement-ethereum-protocol
  16. Charting Crypto Q4 2025: Navigating Uncertainty | Coinbase Institutional, https://www.coinbase.com/en-gb/institutional/research-insights/research/insights-reports/charting-crypto-q4-2025
  17. It’s survey time! How has Go has been working out for you? - The Go …, https://go.dev/blog/survey2025-announce
  18. I have written a short writeup of how geth’s network processing works and I’m looking for someone to verify that it is indeed correct - Ethereum Magicians, https://ethereum-magicians.org/t/i-have-written-a-short-writeup-of-how-geths-network-processing-works-and-im-looking-for-someone-to-verify-that-it-is-indeed-correct/8994
  19. Learn | Explore the SDK - Cosmos SDK, https://docs.cosmos.network/v0.50/learn
  20. Why is infrastructure mostly built on go?? : r/golang - Reddit, https://www.reddit.com/r/golang/comments/1eg8l9m/why_is_infrastructure_mostly_built_on_go/
  21. What “mature” Go libraries/frameworks are available that companies can put their trust in? : r/golang - Reddit, https://www.reddit.com/r/golang/comments/7r9aof/what_mature_go_librariesframeworks_are_available/
  22. Expert Predictions About Cryptocurrency: What to expect in 2025 and Beyond, https://cryptoresearch.report/crypto-research/expert-predictions-about-cryptocurrency-what-to-expect-in-2025-and-beyond/
  23. Choosing the Right Language for Web3: Solidity vs Rust vs Go - GeeksforGeeks, https://www.geeksforgeeks.org/solidity/choosing-the-right-language-for-web3-solidity-vs-rust-vs-go/
  24. Golang vs Rust: Which Language Wins for Backend in 2025? - Netguru, https://www.netguru.com/blog/golang-vs-rust
  25. The Hidden Trade-offs of Go: Understanding Its Limitations | by Charles Wan - Medium, https://charleswan111.medium.com/the-hidden-trade-offs-of-go-understanding-its-limitations-6107ab2ce387
  26. Tracing Go’s Garbage Collection Journey: Reference Counting, Tri-Color, and Beyond, https://hackernoon.com/tracing-gos-garbage-collection-journey-reference-counting-tri-color-and-beyond
  27. Blockchain Dev Tools Guide: Best IDEs, SDKs & APIs for 2025 - Webisoft, https://webisoft.com/articles/blockchain-development-tools/
  28. The Ultimate Tech Stack for Blockchain Developers in 2025 | by Kelley Kinney - Medium, https://medium.com/@kelleymj/the-ultimate-tech-stack-for-blockchain-developers-in-2025-5b16c79390ec
  29. (DePIN): A Comprehensive Guide | 2024 - Rapid Innovation, https://www.rapidinnovation.io/post/depin-the-ultimate-guide-to-decentralized-physical-infrastructure-networks
  30. Solidity vs Rust vs Go: The Best Programming Language for Blockchain Development, https://www.codezeros.com/solidity-vs-rust-vs-go-the-best-programming-language-for-blockchain-development

你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


想系统学习Go,构建扎实的知识体系?

我的新书《Go语言第一课》是你的首选。源自2.4万人好评的极客时间专栏,内容全面升级,同步至Go 1.24。首发期有专属五折优惠,不到40元即可入手,扫码即可拥有这本300页的Go语言入门宝典,即刻开启你的Go语言高效学习之旅!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言进阶课 AI原生开发工作流实战 Go语言精进之路1 Go语言精进之路2 Go语言第一课 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats