<?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>Import on Tony Bai</title><link>https://tonybai.com/tags/import/</link><description>Recent content in Import on Tony Bai</description><generator>Hugo</generator><language>zh-cn</language><copyright>2004-2026 Tony Bai. 版权所有.</copyright><lastBuildDate>Mon, 21 Apr 2025 00:00:00 +0800</lastBuildDate><atom:link href="https://tonybai.com/tags/import/index.xml" rel="self" type="application/rss+xml"/><item><title>Go项目设计的“七宗罪”？警惕那些流行的“反模式”</title><link>https://tonybai.com/2025/04/21/go-project-design-antipatterns/</link><pubDate>Mon, 21 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/21/go-project-design-antipatterns/</guid><description>Go项目设计的“七宗罪”？警惕那些流行的“反模式” - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 *...</description></item><item><title>Go编译的几个细节，连专家也要停下来想想</title><link>https://tonybai.com/2024/11/11/some-details-about-go-compilation/</link><pubDate>Mon, 11 Nov 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/11/11/some-details-about-go-compilation/</guid><description>本文永久链接 – https://tonybai.com/2024/11/11/some-details-about-go-compilation 在Go开发中，编译相关的问题看似简单，但实则蕴含许多细节。有时，即使是Go专家也需要停下来，花时间思考答案或亲自验证。本文将通过几个具体问题，和大家一起探讨Go编译过程中的一些你可能之前未曾关注的细节。 &amp;gt; 注：本文示例使用的环境为Go 1.23.0、...</description></item><item><title>为什么Canonical Import Path注释在Go中不再必要</title><link>https://tonybai.com/2024/10/02/why-canonical-import-paths-no-longer-necessary-in-go/</link><pubDate>Wed, 02 Oct 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/10/02/why-canonical-import-paths-no-longer-necessary-in-go/</guid><description>为什么Canonical Import Path注释在Go中不再必要 | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表...</description></item><item><title>选择正确的Go Module Path</title><link>https://tonybai.com/2024/04/09/choose-the-right-go-module-path/</link><pubDate>Tue, 09 Apr 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/04/09/choose-the-right-go-module-path/</guid><description>本文永久链接 – https://tonybai.com/2024/04/09/choose-the-right-go-module-path 最近我在查看项目代码时，注意到有人在go.mod文件中将module path写为com.example.foo了。根据这个写法，相信屏幕前的读者也可以推断出这位开发人员可能是从Java阵营转到Go的。实际开发中可能有很多开发者会使用类似的内容作为modu...</description></item><item><title>Go项目目录该怎么组织？官方终于出指南了！</title><link>https://tonybai.com/2023/10/05/the-official-guide-of-organizing-go-project/</link><pubDate>Thu, 05 Oct 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/10/05/the-official-guide-of-organizing-go-project/</guid><description>本文永久链接 – https://tonybai.com/2023/10/05/the-official-guide-of-organizing-go-project 长久以来，在Go语言进阶的学习和实践之路上，Go项目目录究竟如何布局一直是困扰大家的一个问题，这是因为Go官方针对这个问题迟迟没有给出说法，更没有提供标准供大家参考。仅有Go语言项目技术负责人Russ Cox在一个开源项目的issu...</description></item><item><title>Go项目组织：在单一repo中管理多个Go module指南</title><link>https://tonybai.com/2023/05/10/a-guide-of-managing-multiple-go-modules-in-mono-repo/</link><pubDate>Wed, 10 May 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/05/10/a-guide-of-managing-multiple-go-modules-in-mono-repo/</guid><description>本文永久链接 – 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...</description></item><item><title>十分钟入门Go语言</title><link>https://tonybai.com/2023/02/23/learn-go-in-10-min/</link><pubDate>Thu, 23 Feb 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/02/23/learn-go-in-10-min/</guid><description>本文永久链接 – https://tonybai.com/2023/02/23/learn-go-in-10-min 本文旨在带大家快速入门Go语言，期望小伙伴们在花费十分钟左右通读全文后能对Go语言有一个初步的认知，为后续进一步深入学习Go奠定基础。 本文假设你完全没有接触过Go，你可能是一名精通其他编程语言的程序员，也可能是毫无编程经验、刚刚想转行为码农的热血青年。 编程简介 ---- 编程就...</description></item><item><title>Go是否支持增量构建？我来告诉你！</title><link>https://tonybai.com/2022/03/21/go-native-support-incremental-build/</link><pubDate>Mon, 21 Mar 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/03/21/go-native-support-incremental-build/</guid><description>本文永久链接 – https://tonybai.com/2022/03/21/go-native-support-incremental-build Go语言**以编译速度快闻名于码农界**。这缘于Go在设计之初就选择抛弃其祖辈C语言的头文件包含机制，选择了以包(package)作为基本编译单元。Go语言的这种以包为基本构建单元的构建模型使得依赖分析变得十分简单，避免了C语言那种通过头文件分析依...</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>没有VPS搭建govanityurls服务？别急！你依然可以自定义Go包导入路径</title><link>https://tonybai.com/2020/11/15/another-approach-to-customize-package-import-path/</link><pubDate>Sun, 15 Nov 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/11/15/another-approach-to-customize-package-import-path/</guid><description>我们见到的Go包的导入路径常常以github.com、bitbucket.org等代码托管站点的域名为前缀，这样的包导入路径有一个问题，那就是**当Go包的托管站点发生变更时(比如从github.om迁移到bitbucket.org或gitlab.com)，该包的使用者需要更新包的导入路径**。当然，在支持go module+GOPROXY的情况下，如果使用者不再升级包版本，他/她完全可以继续使用...</description></item><item><title>Uber Go语言编码规范</title><link>https://tonybai.com/2019/10/12/uber-go-style-guide/</link><pubDate>Sat, 12 Oct 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/10/12/uber-go-style-guide/</guid><description>Uber是世界领先的生活出行服务提供商，也是Go语言的早期adopter，根据Uber工程博客的内容，大致可以判断出Go语言在Uber内部扮演了十分重要的角色。Uber内部的Go语言工程实践也是硕果累累，有大量Go实现的内部工具被Uber开源到github上，诸如被Gopher圈熟知的zap、jaeger等。2018年年末Uber将内部的Go风格规范开源到github，经过一年的积累和更新，该规范...</description></item><item><title>初窥Go module</title><link>https://tonybai.com/2018/07/15/hello-go-module/</link><pubDate>Sun, 15 Jul 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/07/15/hello-go-module/</guid><description>自2007年“三巨头（Robert Griesemer, Rob Pike, Ken Thompson）”提出设计和实现Go语言以来，Go语言已经发展和演化了十余年了。这十余年来，Go取得了巨大的成就，先后在2009年和2016年当选TIOBE年度最佳编程语言，并在全世界范围内拥有数量庞大的拥趸。不过和其他主流编程语言一样，Go语言也不是完美的，不能满足所有开发者的“口味”。这些年来Go在“包依赖...</description></item><item><title>TB一周萃选[第10期]</title><link>https://tonybai.com/2018/03/03/10th-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</link><pubDate>Sat, 03 Mar 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/03/03/10th-issue-of-the-tech-weekly-carefully-chosen-by-tonybai/</guid><description>本文是首发于个人微信公众号的文章**“TB一周萃选\[第10期\]”**的归档。 &amp;gt; 这个世界上最危险的毒药，就是成就感。而解药就是每晚都想一想，明天如何做得更好。 – 英格瓦坎普拉德，宜家创始人 2018年元宵节已过，这个传统意义上的年就算真的过完了，我们的那颗有些闲散、有些懈怠的心需要收一收，是时候为2018年的“事业”做些规划，从2018的起跑线上起跑出去了。就连现在的孩子，在开学第一课时都...</description></item><item><title>写Go代码时遇到的那些问题[第1期]</title><link>https://tonybai.com/2018/01/13/the-problems-i-encountered-when-writing-go-code-issue-1st/</link><pubDate>Sat, 13 Jan 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/01/13/the-problems-i-encountered-when-writing-go-code-issue-1st/</guid><description>程序员步入“大龄”，写代码的节奏也会受到影响。以前是长时间持续地写，现在写代码的节奏变成了“波浪形”：即写一段时间，歇一段时间。当然这里的“歇”并不是真的歇，而是做其他事情了，比如：回顾、整理与总结。 平时写Go代码，时不时就遇到一些问题，或是写出一些让自己还算满意的代码，这里全部列为“问题”行列。这些“问题”(以及其解决方法)往往比较“小”、比较“碎片”，不适合以自己“擅长”的“长篇”风格写出来...</description></item><item><title>使用govanityurls让私有代码仓库中的go包支持go get</title><link>https://tonybai.com/2017/06/30/go-get-go-packages-in-private-code-repo-by-govanityurls/</link><pubDate>Fri, 30 Jun 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/06/30/go-get-go-packages-in-private-code-repo-by-govanityurls/</guid><description>《定制Go Package的Go Get导入路径》一文中我们讲到了通过使用govanityurls服务，我们可以定制go package的go get导入路径。不过，govanityurls的用途还不止这些，它还可以让你的私有代码仓库中的go package支持go get。 众所周知，开源的Go package一般分布在github、bitbucket等站点，但商业组织内部闭源的Go packa...</description></item><item><title>初窥dep</title><link>https://tonybai.com/2017/06/08/first-glimpse-of-dep/</link><pubDate>Thu, 08 Jun 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/06/08/first-glimpse-of-dep/</guid><description>Go语言程序组织和构建的基本单元是Package，但Go语言官方却没有提供一款“像样的”Package Management Tool(包管理工具)。随着Go语言在全球范围内应用的愈加广泛，缺少官方包管理工具这一问题变得日益突出。 2016年GopherCon大会后，在Go官方的组织下，一个旨在改善Go包管理的commitee成立了，共同应对Go在package management上遇到的各种问...</description></item><item><title>Go包导入与Java的差别</title><link>https://tonybai.com/2016/09/13/package-import-in-golang-vs-in-java/</link><pubDate>Tue, 13 Sep 2016 00:00:00 +0800</pubDate><guid>https://tonybai.com/2016/09/13/package-import-in-golang-vs-in-java/</guid><description>闲暇时翻阅了近期下载到的电子书《Go in Practice》 ，看到1.2.4 Package Management一节中的代码Demo，感觉作者对Go package导入的说法似乎不够精确：“Packages are imported by their name”(后续的说明将解释不精确的原因)。联想到前几天遇到的一个Java包导入的问题，让我隐约地感觉Java程序员很容易将两种语言的Pack...</description></item><item><title>godep支持Go 1.5 vendor</title><link>https://tonybai.com/2015/08/05/godep-support-go15-vendor/</link><pubDate>Wed, 05 Aug 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/08/05/godep-support-go15-vendor/</guid><description>Go 1.5 vendor/实验特性出炉后，市面上的go第三方包依赖和管理工具显然都无法与之兼容，除了修改代码，别无它法。市场占有率最大的godep做出了表 率，目前其最新版本(go get github.com/tools/godep)已经初步支持了这一实验特性，即在GO15VENDOREXPERIMENT=1时，将使用vendor 目录（而不是Godeps目录）存放copy的第三方包，并在go...</description></item><item><title>理解Golang包导入</title><link>https://tonybai.com/2015/03/09/understanding-import-packages/</link><pubDate>Mon, 09 Mar 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/03/09/understanding-import-packages/</guid><description>Golang使用包（package）这种语法元素来组织源码，所有语法可见性均定义在package这个级别，与Java 、python等语言相比，这算不上什么创新，但与C传统的include相比，则是显得“先进”了许多。 Golang中包的定义和使用看起来十分简单： 通过package关键字定义包： package xxx 使用import关键字，导入要使用的标准库包或第三方依赖包。 import ...</description></item></channel></rss>