- 博客(830)
- 资源 (1)
- 收藏
- 关注
原创 WaitGroup.Go要来了?Go官方提案或让你告别Add和Done样板代码
然而,其经典的Add(1)、go func() { defer wg.Done() ... }()、Wait()模式虽然强大,却也因其固定写法和潜在的陷阱(如忘记Done或将Add误置于goroutine内部)而让开发者时常感到繁琐,对新手尤其不友好。许多流行的第三方库(如tailscale.com/syncs和sourcegraph/conc)以及golang.org/x/sync/errgroup都已经实现了类似的Go方法,证明了其在实际开发中的价值和受欢迎程度。),但之前的提案因各种原因未能被接受。
2025-04-03 08:01:16
492
原创 Go模块发布流程再加固:go mod verify -tag提案详解
当需要对某个模块的特定版本进行安全审计或深入的代码审查时,可以使用此命令验证本地检出的代码副本确实是sumdb中记录的那个“官方”版本,而不是可能已被篡改的某个代码托管平台上的版本。正如提案贡献者和Go核心团队成员在讨论中指出的,目前缺少一个简单直接的方式让模块作者确认:“我本地标记为v1.2.3的代码,是否就是全世界通过Go工具链获取到的那个v1.2.3?: 一个具体的 Git 标签,例如v1.2.3。命令将检查本地仓库中该标签对应的代码树,计算其哈希,并与sumdb中记录的该版本的哈希进行比对。
2025-03-28 08:30:28
700
原创 Go 1.25规范大扫除:移除“Core Types”,为更灵活的泛型铺路
值得注意的是,最初的讨论中曾考虑过伴随此次变更放宽一些语言规则(例如range对某些混合类型集的支持),但考虑到对现有工具链(如x/tools/ssa, vet分析器)的潜在影响以及某些场景下语义的复杂性(如range对[]byte和string的不同行为),Go团队最终决定本次Go 1.25的变更仅限于规范文本的清理和概念移除。Go 1.25移除“核心类型”是一次重要的“技术债务”清理,它简化了语言规范,降低了开发者的学习成本,并且最关键的是,为Go 泛型的未来演进扫清了障碍。
2025-03-27 08:45:34
770
原创 Go语言的2025开局:AI浪潮助推,生态持续繁荣
Eino的开源,标志着国内科技公司在LLM AI基础设施领域对Go语言的积极投入,有望为Go开发者提供更加便捷、高效的LLM 应用开发工具和平台,进一步丰富和完善Go语言在人工智能领域的生态。总而言之,2025年伊始,Go语言在AI应用开发领域展现出巨大的潜力,活跃的社区为其发展提供了坚实的基础,稳健的技术地位保证了其在传统领域的优势,而TypeScript编译器的移植则预示着跨界融合的新机遇。,更在人工智能的浪潮中找到了新的增长点,其日益壮大的社区和不断完善的生态系统正共同驱动着Go语言迈向新的高度。
2025-03-18 08:01:29
972
原创 typescript-go编译速度慢?Go团队连夜爆改提速5倍!
选择 Go,是基于 TypeScript 的具体技术需求和务实的工程选择。这次 TypeScript 编译器迁移到 Go 的事件,不仅是 TypeScript 自身的一次重大技术升级,也是 Go 社区强大实力和开放合作精神的体现。正是开发者们的积极参与和反馈,以及 Go 团队的快速响应和优化,才使得 TypeScript 编译器的性能得以大幅提升。我们有理由相信,TypeScript 和 Go 的强强联合,将会为开发者们带来更高效、更强大的开发工具,为未来的软件开发注入新的活力!我们可不是这样办事的。
2025-03-14 08:33:17
631
原创 Anders Hejlsberg专访全文:TypeScript正在向Go移植
请点击上方蓝字TonyBai订阅公众号!昨天发表了《Anders Hejlsberg亲自操刀向Go语言移植!TypeScript编译器性能狂飙10倍![1]》,今天整理了Anders Hejlsberg的专访[2]的文字稿(时长超过1小时),并将全文发布在这里供大家参考。注:由于专访内容较为丰富,文字稿是通过工具提取油管视频字幕,并由AI进行格式化整理后整体翻译,最后经过人工校对而成。因此,文中可...
2025-03-13 08:00:38
933
原创 Anders Hejlsberg亲自操刀向Go语言移植!TypeScript编译器性能狂飙10倍!
请点击上方蓝字TonyBai订阅公众号!TypeScript、C#语言、Delphi语言之父Anders Hejlsberg[1]今日在Microsoft开发者博客宣布重大消息,TypeScript编译器以及工具链将移植到Go语言[2],性能提升高达10倍!这究竟是怎么回事?为什么要用Go?对开发者有什么影响?本文将为你深度解读。TypeScript迎来史诗级更新,性能提升10倍!就在今天,Typ...
2025-03-12 08:00:48
1004
原创 构建高效的AI智能体[译]
请点击上方蓝字TonyBai订阅公众号!近来,人工智能领域再次风起云涌,各种能力超强的大模型、创新概念和工具层出不穷,让人目不暇接。从DeepSeek发布的开源MoE 模型DeepSeek-V3[1]和令人惊艳的具备深度思考能力的推理模型DeepSeek R1[2],到声称是“世界上第一个通用AI智能体(Agent)”的Manus[3]以及其开源复刻品OpenManus[4],再到Anthropi...
2025-03-11 08:34:58
986
原创 深入GOCACHEPROG:Go构建缓存的自定义扩展
请点击上方蓝字TonyBai订阅公众号!1. 背景众所周知,Go build cache是在Go 1.10版本[1]加入到Go工具链中的,缓存的主要目标是避免重复编译相同的代码,从而加快构建速度。默认情况下,Go构建缓存位于用户主目录下的一个特定目录中,例如,Linux上通常是HOME/.cache/go-build,Windows上是%LocalAppData%\go-build。Mac上则是$...
2025-03-05 08:02:03
1036
转载 真心建议大家冲一冲新兴领域,工资高前景好!
最近,Deepseek全球爆火让AI技术又一次进入了快速发展期!百度、字节、腾讯等等巨头互联网公司,纷纷接入DeepSeek,加速落地AI应用!这让「大模型应用开发工程师」一跃成为炙手可热的岗位!DeepSeeK甚至还开出154W的高薪,挖掘会大模型技术、懂落地的AI人才!作为技术人,如何不被时代抛弃,享受AI技术带来的就业红利?!????知乎知学堂特发起:行业前沿资源——「大模型应用开发工程师」????...
2025-03-04 08:00:28
26
原创 编程语言战争:从“斗嘴”变为了“斗图”
请点击上方蓝字TonyBai订阅公众号!曾几何时,程序员们为了捍卫自己心爱的编程语言,不惜在论坛、博客、社交媒体上与“异教徒”们展开激烈的口水战。而如今,这场旷日持久的“圣战”似乎有了新的形式——斗图。各种编程语言的梗图层出不穷,以幽默、讽刺的方式表达着程序员们对不同语言的爱恨情仇,这显然“得益于”目前多模大模型的飞速发展,让程序员们的想象力有了图片形式的“出口”。一、编程语言战争:永恒的纷争编程...
2025-02-24 21:30:40
984
原创 编译速度与运行时性能大对决:C、C++、Go、Rust谁是终极王者?
请点击上方蓝字TonyBai订阅公众号!在软件开发的世界里,选择一门合适的编程语言至关重要。编译速度影响开发效率,运行时性能决定程序表现。C、C++、Go和Rust作为当下热门的系统级编程语言,各自拥有拥趸。但它们在性能上究竟孰优孰劣?近期国外一位开发者通过自己的benchmark测试进行了一场真刀真枪的性能大比拼!并给出了一份详尽的基准测试报告。下面我们就来看看他的测试方法、测试结果以及最终给出...
2025-02-23 21:30:41
1097
原创 Go 1.24中值得关注的几个变化
请点击上方蓝字TonyBai订阅公众号!北京时间2025年2月12日,恰逢中国传统元宵佳节,远在美国的Go团队正式发布了Go 1.24[1]的第一个版本Go 1.24.0[2]。这也是Go团队在更换Tech Leader为Austin Clements[3]后发布的首个大版本。按照惯例,每次Go大版本发布时,我都会撰写一篇“Go 1.x中值得关注的几个变化”的文章。自2014年的Go 1.4版本[...
2025-02-17 08:00:29
971
原创 Go encoding/json/v2提案:JSON处理新引擎
请点击上方蓝字TonyBai订阅公众号!Go标准库中的encoding/json包,作为Go社区广泛使用的JSON处理工具,至今已走过十余年[1]。凭借其将JSON数据与原生Go类型相互转换的能力、通过struct tag自定义字段表示的灵活性,以及Go类型自定义JSON格式的特性,赢得了Go开发者的青睐。然而,随着时间的推移,encoding/json的局限性也逐渐显现。孤立地解决这些问题可能会...
2025-02-05 21:01:09
980
原创 Go导出标识符:那些鲜为人知的细节
请点击上方蓝字TonyBai订阅公众号!前不久,在“Go+用户组”微信群里看到有开发者向七牛云老板许式伟反馈七牛云Go SDK中的某些类型没有导出,导致外部包无法使用的问题(如下图)[1]:七牛开发人员迅速对该问题做出了“更正”,将问题反馈中涉及的类型saveasArgs和saveasReply改为了导出类型,即首字母大写:不过,这看似寻常的问题反馈与修正却引发了我的一些思考。我们大胆臆想一下:如...
2025-01-23 08:03:32
585
原创 低调考证,悄然崛起,朋友圈的AI大咖就是你
在人工智能迅猛发展的今天,掌握大模型技术已成为技术人员和未来职场人士的必备技能。使用AI工具完成各类工作任务已成为广泛趋势。随着AI大模型在各个领域的广泛应用,学习这些前沿技术不仅是提升个人竞争力的关键,更是抢占技术高地的必要途径。有远见的人会选择系统地学习人工智能,获取AI大模型证书,为将来的发展和当下的高薪工作做好准备!培训班信息为了帮助您紧跟时代步伐,提升个人技能,中国人工智能培训网、北京龙...
2025-01-22 08:04:04
689
原创 Go工具链版本已不由你定:go和toolchain指令详解
请点击上方蓝字TonyBai订阅公众号!Go语言自诞生以来,就一直将向后兼容性作为其核心理念之一。Go1兼容性承诺[1]确保了为Go1.0编写的代码能够在后续的Go1.x版本中持续正确地编译和运行。这一承诺为Go的成功奠定了坚实的基础,它不仅保障了稳定性,也大大减轻了随着语言演进带来的代码维护负担。然而,兼容性的内涵并不仅限于向后兼容。向前兼容性,即旧版本的工具链能够优雅地处理针对新版本编写的代码...
2025-01-14 08:01:08
1291
转载 这才是我想要的Go语言书,一本书讲透Go核心原理(文末赠书)
文末赠书17年前,UTF-8 的设计者之一Rob Pike和同事Robert Griesemer在Google的分布式编译平台上编译C++程序时,利用漫长的等待时间讨论了编程语言的现存问题 ,并达成共识:简化语言比在已经臃肿的语言上增加新特性更能促进进步。于是,他们在一块白板上写下新语言需要的特性,随后邀请了UNIX之父Ken Thompson加入,共同启动了Go语言项目。如今,Go语言凭借其在D...
2025-01-11 08:01:29
46
原创 Go错误处理新思路:`?`操作符能否终结if err != nil样板代码
请点击上方蓝字TonyBai订阅公众号!错误处理一直是编程中的重要组成部分,Go语言以其独特的错误处理机制而闻名。Go摒弃了传统主流语言(如Java等)的异常处理模型,而是将错误作为函数返回值的一部分,鼓励开发者显式地处理每个可能出现的错误。这种机制的核心在于error接口和if err != nil语句。然而,随着Go项目规模的增长,if err != nil的频繁出现导致了大量的代码冗余,让代...
2025-01-10 22:00:53
802
原创 2024年Go语言盘点:排名历史新高,团队新老传承
请点击上方蓝字TonyBai订阅公众号!2024年底,由于感染了甲流,我在家卧床休息了两天,原定于2024年进行的Go语言盘点写作因此被迫推迟。不过,我始终相信:迟到但不会缺席。在2025年元旦的第一天,我终于开始了这篇博客的撰写。时间过得真快,《2023年Go语言盘点:稳中求新,稳中求变[1]》依然历历在目。转眼之间,一年365天过去了,发生了许多事情,甚至有些记忆已在脑海中模糊或消逝。在这里,...
2025-01-06 08:01:55
871
原创 探索基于pion开发的WebRTC应用的建连过程
请点击上方蓝字TonyBai订阅公众号!在《WebRTC第一课:从信令、ICE到NAT穿透的连接建立全流程》一文中,我们从理论层面全面细致地了解了WebRTC连接建立的完整流程。这个流程大致可以分为以下几个阶段:与信令服务器的交互ICE候选项的采集、交换与排序形成ICE候选检查表、进行连通性检查,并最终确定最优候选路径这个过程的复杂性不言而喻。即便多次阅读全文,读者可能仍难以形成深入的理解。因此,...
2024-12-26 08:00:31
781
原创 使用issue2md将Github issue转换为Markdown
请点击上方蓝字TonyBai订阅公众号!到2024年底,不论你是否承认,AI时代都已经到来!近两个月,三大顶级商业AI模型巨头:Claude Sonnet 3.5[2]、Google Gemini 2.0 Flash Experimental[3]以及ChatGPT o3[4]你方唱罢我登场,好不热闹!作为走在AI应用前沿的程序员,利用AI辅助自己提高学习和工作实践的效率都是必不可少的。在使用AI...
2024-12-24 08:02:26
866
原创 Go 1.24新特性前瞻:工具链和标准库
请点击上方蓝字TonyBai订阅公众号!在上一篇文章中,我们介绍了即将于2025年2月发布的Go 1.24版本在语法、编译器和运行时方面的主要变化。本文将继续承接上文,重点介绍Go 1.24在工具链和标准库方面的重要更新,供大家参考。1. 工具链1.1go.mod新增tool指示符,支持对tool的依赖管理(#48429)[1]我们日常编写Go项目代码时常常会依赖一些使用Go编写的工具,比如go...
2024-12-17 08:00:28
1609
原创 Go 1.24新特性前瞻:语法、编译器与运行时
请点击上方蓝字TonyBai订阅公众号!自2020年底撰写《Go 1.16版本新特性前瞻》以来,四年转瞬而逝。在这段时间里,每当Go的大版本开发进入新特性冻结(freeze)阶段,我都会为大家带来该版本的特性前瞻,旨在让大家更早地了解和实验这些新特性,从而在版本正式发布时能够准确评估是否应用它们。11月末,Go 1.24的新特性开发已经冻结,我认为是时候对Go 1.24新特性进行前瞻了。本次前瞻将...
2024-12-16 08:14:25
1913
原创 WebRTC第一课:从信令、ICE到NAT穿透的连接建立全流程
请点击上方蓝字TonyBai订阅公众号!在上一篇文章《WebRTC第一课:网络架构与NAT工作原理》中,我们介绍了WebRTC的网络架构和NAT的基本概念,学习了WebRTC采用端对端(P2P)的通信模型,知道了NAT(网络地址转换)的概念以及给像WebRTC这样的直接P2P通信带来的挑战。在实际的网络环境中,建立WebRTC这样的端到端连接的确并非易事。因此,在这篇文章中,我将继续上一篇文章的内...
2024-12-14 09:45:08
1343
原创 量子计算入门与Go模拟
请点击上方蓝字TonyBai订阅公众号!2019年,Google宣布实现"量子霸权",声称其53量子比特的量子计算机完成了一个经典超级计算机需要1万年才能完成的计算任务。这一宣告在当时引发了广泛关注和热议。而在这个过程中,我们也看到了太多对量子计算的误解。有人将其想象成未来取代经典计算机的全能机器,认为它能以指数级速度解决所有计算问题;也有人认为量子计算只是一个遥不可及的科研概念,与实际应用毫无关...
2024-12-11 08:29:35
979
原创 探索Docker默认网络NAT映射的分配与过滤行为
请点击上方蓝字TonyBai订阅公众号!在《WebRTC第一课:网络架构与NAT工作原理》一文中,我们对WebRTC的网路架构进行说明,了解到了NAT的工作原理、RFC 3489[2]对NAT的四种传统分类以及较新的RFC 4787[3]中按分配行为和过滤行为对NAT行为的分类。不过,“纸上得来终觉浅,绝知此事要躬行”,在这篇文章中,我打算选取一个具体的NAT实现进行案例研究(Case Study...
2024-12-05 08:02:22
1007
原创 WebRTC第一课:网络架构与NAT工作原理
请点击上方蓝字TonyBai订阅公众号!2023年下旬,OpenAI与Livekit的合作[1]在科技圈引起了不小的轰动。这两家公司联手,通过WebRTC技术和大型语言模型(LLM)的结合,使AI模型具有了看、听和说话的能力[2]。这一举动不仅彰显了WebRTC在现代通信技术中的重要地位,也为我们揭示了AI与实时通信融合的无限可能。WebRTC技术在大流行后再一次进入技术人的视野,恰好在我们今年打...
2024-11-28 08:01:00
945
原创 一文搞懂如何在Go包中支持Hash-Based Bisect调试
请点击上方蓝字TonyBai订阅公众号!bisect是一个英文动词,意为“二分”或“分成两部分”。在数学和计算机科学中,通常指将一个区间或一个集合分成两个相等的部分。对于程序员来说,最熟悉的bisect应用莫过于下面两个:算法中的二分查找(binary search)二分查找是一个经典且高效的查找算法,任何一本介绍数据结构或计算机算法的书都会包含对二分查找的系统说明。所谓二分查找就是通过不断将搜索...
2024-11-25 08:00:54
980
原创 Go包构建:专家也未必了解的文件选择细节
请点击上方蓝字TonyBai订阅公众号!在Go语言开发中,包(package)是代码组织的基本单位[1],也是基本的构建单元。Go编译器会将每个包构建成一个目标文件(.a),然后通过链接器将这些目标文件链接在一起,形成最终的可执行程序。尽管Go包的构建过程看似简单,但实际上蕴含着许多值得深入了解的细节。例如,当我们执行go build命令时,Go编译器是如何选择需要编译的源文件的?你可能会回答:“...
2024-11-21 08:00:24
1017
原创 走向合规:Go加密库对FIPS 140的支持
请点击上方蓝字TonyBai订阅公众号!在今年3月份,Microsoft Azure团队宣布开设Go开发人员博客[1],旨在向开发者通报Microsoft在Go领域的最新动态,包括如何在Azure上部署Go工作负载以及与Go编程相关的文章。然而,经过一段时间的关注,我发现该博客上的大多数文章都呈现出类似下图中的标题格式:似乎微软在紧跟Go的发布节奏,发布自己维护的fork版本[2]。那么,这些fo...
2024-11-16 08:01:34
941
原创 Gotip安装:基于Go镜像代码仓库
请点击上方蓝字TonyBai订阅公众号!在《Go map使用Swiss Table重新实现,性能最高提升近50%》一文中,我曾使用过Gotip版本对基于Swiss table的新map实现做过benchmark测试。有过几年Go开发经验的Gopher都知道Gotip版本是啥,但一些初学者可能并不十分清楚。Gotip版本可以理解为Go语言的devel版本,是支持开发者全面体验Go最新特性的主流方法之...
2024-11-15 08:01:05
853
原创 Go map使用Swiss Table重新实现,性能最高提升近50%
请点击上方蓝字TonyBai订阅公众号!在2024月11月5日的Go compiler and runtime meeting notes[1]中,我们注意到了一段重要内容,如下图红框所示:这表明,来自字节的一位工程师在两年多前提出的“使用Swiss table重新实现Go map[2]”的建议即将落地,目前该issue已经被纳入Go 1.24里程碑[3]。Swiss Table是由Google工...
2024-11-14 08:00:30
1550
原创 Go,15岁了[译]
请点击上方蓝字TonyBai订阅公众号!虽然迟到了,但绝不缺席!新任Go技术负责人Austin Clements在Go语言15岁生日后的第二天,在Go官方博客上发表了庆祝文章“Go Turns 15[2]”。在这篇文章中,Austin回顾了过去一年Go项目和社区的变化,以及Go团队的努力工作,并对Go的未来发展进行了展望。我在此对这篇庆生文进行了翻译,供大家参考。Go,生日快乐!周日,我们庆祝了G...
2024-11-12 21:02:04
823
原创 从简单到强大:再次探索Caddy服务器的魅力
请点击上方蓝字TonyBai订阅公众号!Go语言诞生十多年来,社区涌现出众多优秀的Web服务器和反向代理解决方案。其中,最引人注目的无疑是Caddy[2]和Traefik[3]。这两者都为开发者和系统管理员提供了更简单、更安全的现代化Web服务器和反向代理部署选项。尽管它们的目标略有不同,Caddy最初旨在满足开发者快速搭建反向代理的需求,特别关注配置的简易性,并在后期增加了自动HTTPS和全面的...
2024-11-07 08:10:36
1405
原创 成为那个拿锤子的人
请点击上方蓝字TonyBai订阅公众号!“当你有一个锤子时,每件事看起来都像一个钉子”,这句来自心理学家亚伯拉罕·马斯洛(没错!就是提出五层需求理论的那个马斯洛)的名言揭示了人们在掌握一种技能或工具时,很容易将其视作通用解决方案的倾向,在技术领域,这种倾向尤为明显。同时这句话也常被用来描述人们对工具的过度依赖和思维的局限性。在程序员圈子中,“语言战争(programming language wa...
2024-11-03 22:17:15
903
原创 构建无密码认证:passkey入门与Go实现
请点击上方蓝字TonyBai订阅公众号!传统的密码认证一直以来都是数字时代的主流身份验证方式。然而,用户常常选择易记的弱密码并重复使用,导致账号易受攻击。密码泄露、钓鱼攻击等安全问题层出不穷,超过80%的数据泄露与密码相关。截图来自FIDO联盟官网与此同时,频繁的密码管理和忘记密码情况严重影响用户体验。服务商在安全保存用户密码方面的责任也增加了系统建设和维护的成本。为了应对这些问题,科技行业开始积...
2024-11-01 08:01:14
1300
转载 离谱!裁员裁出新高度了。。
「READING」前几天一个好久不见的朋友在微信上突然联系我。问我公司招不招人,说自己已经失业9个月了,目前家庭存款只有2万元,还要养房子、孩子和老婆。不可否认大环境很糟糕,外部的不确定性加大了求职的难,但对于名校毕业,88年的他来说,找工作不应该是件难事,才对啊。问题究竟出在哪里?细聊之下才知道。去年年初,他高薪(涨50%)跳槽到一家跨境电商大企业做新业务的研发负责人。朋友寻思着公司规模大,给到...
2024-10-28 08:00:22
107
原创 写出Go标准库级别文档注释的十个细节
请点击上方蓝字TonyBai订阅公众号!Go语言以其优秀的工具链、“开箱即用”的标准库和相对完善的文档生态而闻名。Go通过代码中的文档注释(Doc Comments)[1]生成相关包、类型、函数以及方法的说明文档。Go标准库中的文档注释不仅为使用者提供了清晰的指引,更为广大Go开发人员树立了高质量技术文档的标杆。然而,在日常开发中,很多Go开发者往往只注意到文档注释的基本格式要求,而忽略了一些能让...
2024-10-27 22:01:03
930
原创 认知负荷对编程语言选择和学习的影响
请点击上方蓝字TonyBai订阅公众号!(请使用浏览器扫码)在《Go语言精进之路:从新手到高手的编程思想、方法和技巧[1]》两卷书出版后,我收到了一些读者的反馈。其中一位读者提到:“为什么作者如此偏爱使用心智负担这个词?”当时我对此并未给予太多关注。然而,近期我阅读了一些关于认知心理学和脑科学的著作后,才意识到读者的反馈不仅仅是对该词频繁使用的关注,更可能暗示了用词不当的问题。“心智负担”(Men...
2024-10-24 08:02:46
1025
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人