Go项目设计的“七宗罪”?警惕那些流行的“反模式”

Go项目设计的“七宗罪”?警惕那些流行的“反模式” - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

April 21, 2025 · 9 min · Tony Bai

Go编译的几个细节,连专家也要停下来想想

本文永久链接 – https://tonybai.com/2024/11/11/some-details-about-go-compilation 在Go开发中,编译相关的问题看似简单,但实则蕴含许多细节。有时,即使是Go专家也需要停下来,花时间思考答案或亲自验证。本文将通过几个具体问题,和大家一起探讨Go编译过程中的一些你可能之前未曾关注的细节。 ...

November 11, 2024 · 17 min · Tony Bai

为什么Canonical Import Path注释在Go中不再必要

为什么Canonical Import Path注释在Go中不再必要 | Tony Bai Tony Bai一个程序员的心路历程 Google Go语言编码风格规范 Google Go语言编码风格规范:指南篇 Google Go语言编码风格规范:决定篇 Google Go语言编码风格规范:最佳实践篇 Go语言第一课FAQ 关于我 文章列表 为什么Canonical Import Path注释在Go中不再必要 十月 2, 2024 0 条评论 ...

October 2, 2024 · 8 min · Tony Bai

选择正确的Go Module Path

本文永久链接 – https://tonybai.com/2024/04/09/choose-the-right-go-module-path 最近我在查看项目代码时,注意到有人在go.mod文件中将module path写为com.example.foo了。根据这个写法,相信屏幕前的读者也可以推断出这位开发人员可能是从Java阵营转到Go的。实际开发中可能有很多开发者会使用类似的内容作为module path,但这显然不是Go的推荐写法或惯用法。 ...

April 9, 2024 · 6 min · Tony Bai

Go项目目录该怎么组织?官方终于出指南了!

本文永久链接 – https://tonybai.com/2023/10/05/the-official-guide-of-organizing-go-project 长久以来,在Go语言进阶的学习和实践之路上,Go项目目录究竟如何布局一直是困扰大家的一个问题,这是因为Go官方针对这个问题迟迟没有给出说法,更没有提供标准供大家参考。仅有Go语言项目技术负责人Russ Cox在一个开源项目的issue中给出了他关于Go项目结构的最小标准布局的想法。 ...

October 5, 2023 · 9 min · Tony Bai

Go项目组织:在单一repo中管理多个Go module指南

本文永久链接 – https://tonybai.com/2023/05/10/a-guide-of-managing-multiple-go-modules-in-mono-repo 0. 单repo单module管理回顾 众所周知,Go在1.11版本中引入了go module,随着近几年Go module机制的逐渐成熟,它已经被Go团队确定为Go标准的依赖管理与构建方案,原先的GOPATH mode已经被彻底废弃。 ...

May 10, 2023 · 9 min · Tony Bai

十分钟入门Go语言

本文永久链接 – https://tonybai.com/2023/02/23/learn-go-in-10-min 本文旨在带大家快速入门Go语言,期望小伙伴们在花费十分钟左右通读全文后能对Go语言有一个初步的认知,为后续进一步深入学习Go奠定基础。 ...

February 23, 2023 · 23 min · Tony Bai

Go是否支持增量构建?我来告诉你!

本文永久链接 – https://tonybai.com/2022/03/21/go-native-support-incremental-build Go语言以编译速度快闻名于码农界。这缘于Go在设计之初就选择抛弃其祖辈C语言的头文件包含机制,选择了以包(package)作为基本编译单元。Go语言的这种以包为基本构建单元的构建模型使得依赖分析变得十分简单,避免了C语言那种通过头文件分析依赖的巨大开销。在我的《Go语言精进之路》一书中,我也给出了Go编译速度快的三点具体原因,包括: ...

March 21, 2022 · 11 min · Tony Bai

Go语言的“黑暗角落”:盘点学习Go语言时遇到的那些陷阱[译](第二部分)

本文翻译自Rytis Bieliunas的文章《Darker Corners of Go》。 第一部分参见《Go语言的“黑暗角落”:盘点学习Go语言时遇到的那些陷阱[译](第一部分)》 7. 字符串和字节数组 1) Go中的字符串 Go字符串的内部定义如下所示: type StringHeader struct { Data uintptr Len int } 字符串本身是一个值类型,它具有一个指向字节数组的指针和固定长度。字符串中的“零字节”不像在C中那样标记着字符串的结尾。字符串内可以有任何数据。通常,该数据被编码为UTF-8字符串,但不一定如此。 ...

March 29, 2021 · 29 min · Tony Bai

Go语言的“黑暗角落”:盘点学习Go语言时遇到的那些陷阱[译](第一部分)

本文翻译自Rytis Bieliunas的文章《Darker Corners of Go》。 译注:若干年前,Kyle Quest曾发过一篇名为“50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs”的文章,仿效著名的《C Traps and Pitfalls》编写了50条Go语言的陷阱与缺陷,一时在Go社区广为流传。而本文是又一篇较为系统总结Go陷阱的文章,不同于50 Shades of Go的按初中高级陷阱的分类方式,本文是按类别对Go陷阱做讲解。 ...

March 29, 2021 · 14 min · Tony Bai