Web Analytics

Go unique包:突破字符串局限的通用值Interning技术实现

本文永久链接 – https://tonybai.com/2024/09/18/understand-go-unique-package-by-example Go的1.23版本中引入了一个新的标准库包unique,为Go开发者带来了高效的值interning能力。这种能力不仅适用于字符串类型值,还可应用于任何可比较(comparable)类型的值。 本文将简要探讨interning技术及其在Go中的实现方式,通过介绍unique包的功能,帮助读者更好地理解这一技术及其实际应用。 1. 从string interning技术说起 通常提到interning技术时,指的是传统的字符串驻留(string interning)技术。它是一种优化方法,旨在减少程序中重复字符串的内存占用,并提高字符串比较操作的效率。其基本原理是将相同的字符串值在内存中只存储一次,所有对该字符串的引用都指向同一内存地址,而不是为每个相同字符串创建单独的副本。下图展示了使用和不使用string interning技术的对比: ...

September 18, 2024 · 14 min · Tony Bai

JSON包新提案:用“omitzero”解决编码中的空值困局

JSON包新提案:用“omitzero”解决编码中的空值困局 | Tony Bai Tony Bai一个程序员的心路历程 Google Go语言编码风格规范 Google Go语言编码风格规范:指南篇 Google Go语言编码风格规范:决定篇 Google Go语言编码风格规范:最佳实践篇 Go语言第一课FAQ 关于我 文章列表 JSON包新提案:用“omitzero”解决编码中的空值困局 九月 12, 2024 0 条评论 ...

September 12, 2024 · 8 min · Tony Bai

致敬:程序员成长路上的良师与经典著作

本文永久链接 – https://tonybai.com/2024/09/10/programmer-mentors-and-their-classic-works 早上送孩子去幼儿园的路上,收到一个小伙伴的微信: 我这才意识到今天是教师节!为人师,自觉还不够格!但在这个特殊的日子,作为IT行业从业人员,我想向那些在计算机科学和编程领域给予我们启迪的“老师们”致敬。这些老师可能不是传统意义上站在讲台前的教育者,但他们通过自己的著作、思想和贡献,通过他们的智慧结晶,为我们指明了方向,为无数程序员的成长之路点亮了明灯。 ...

September 10, 2024 · 18 min · Tony Bai

重拾精髓:go doc -http让离线包文档浏览更便捷

重拾精髓:go doc -http让离线包文档浏览更便捷 | Tony Bai Tony Bai一个程序员的心路历程 Google Go语言编码风格规范 Google Go语言编码风格规范:指南篇 Google Go语言编码风格规范:决定篇 Google Go语言编码风格规范:最佳实践篇 Go语言第一课FAQ 关于我 文章列表 重拾精髓:go doc -http让离线包文档浏览更便捷 九月 6, 2024 0 条评论 ...

September 6, 2024 · 5 min · Tony Bai

Go 1.18之后的语法新特性Quiz,你能做对几个?

Go 1.18之后的语法新特性Quiz,你能做对几个? | Tony Bai Tony Bai一个程序员的心路历程 Google Go语言编码风格规范 Google Go语言编码风格规范:指南篇 Google Go语言编码风格规范:决定篇 Google Go语言编码风格规范:最佳实践篇 Go语言第一课FAQ 关于我 文章列表 Go 1.18之后的语法新特性Quiz,你能做对几个? 八月 27, 2024 0 条评论 ...

August 27, 2024 · 4 min · Tony Bai

从零开始编程:Go语言真的适合新手吗?

从零开始编程:Go语言真的适合新手吗? | Tony Bai Tony Bai一个程序员的心路历程 Google Go语言编码风格规范 Google Go语言编码风格规范:指南篇 Google Go语言编码风格规范:决定篇 Google Go语言编码风格规范:最佳实践篇 Go语言第一课FAQ 关于我 文章列表 从零开始编程:Go语言真的适合新手吗? 八月 22, 2024 0 条评论 ...

August 22, 2024 · 7 min · Tony Bai

Go 1.23中值得关注的几个变化

本文永久链接 – https://tonybai.com/2024/08/19/some-changes-in-go-1-23 距离上一次Go 1.22版本发布又过去六个月了,我们如期迎来了Go 1.23版本的发布。 对于Go项目乃至整个Go社区而言,这个版本还有一点额外的意义,那就是这是Russ Cox作为Tech lead,领导Go团队发布的最后一个Go版本了。 ...

August 19, 2024 · 18 min · Tony Bai

都2024年了,当初那个“Go,互联网时代的C语言”的预言成真了吗?

都2024年了,当初那个“Go,互联网时代的C语言”的预言成真了吗? | Tony Bai Tony Bai一个程序员的心路历程 Google Go语言编码风格规范 Google Go语言编码风格规范:指南篇 Google Go语言编码风格规范:决定篇 Google Go语言编码风格规范:最佳实践篇 Go语言第一课FAQ 关于我 文章列表 都2024年了,当初那个“Go,互联网时代的C语言”的预言成真了吗? 八月 17, 2024 0 条评论 ...

August 17, 2024 · 5 min · Tony Bai

通过Go示例理解函数式编程思维

本文永久链接 – https://tonybai.com/2024/08/11/understand-functional-programming-in-go 一个孩子要尝试10次、20次才肯接受一种新的食物,我们接受一种新的范式,大概不会比这个简单。– 郭晓刚 《函数式编程思维》译者 函数式编程(Functional Programming, 简称fp)是一种编程范式,与命令式编程(Imperative Programming)、面向对象编程(OOP)、泛型编程(Generics Programming)、逻辑编程(logic Programming)等是一类的概念。 ...

August 11, 2024 · 21 min · Tony Bai

使用TLA+形式化验证Go并发程序

本文永久链接 – https://tonybai.com/2024/08/05/formally-verify-concurrent-go-programs-using-tla-plus Writing is nature’s way of letting you know how sloppy your thinking is – Guindon 在2024年6月份举办的GopherCon Europe Berlin 2024上,一个叫Raghav Roy的印度程序员(听口音判断的)分享了Using Formal Reasoning to Build Concurrent Go Systems,介绍了如何使用形式化验证工具TLA+来验证Go并发程序的设计正确性。 ...

August 5, 2024 · 21 min · Tony Bai