
1.5 选择开发工具
虽然我们只用文本编辑器和go
命令就能编写一个小的Go程序,但当你在大型项目中工作时,可能会需要更高级的工具。幸运的是,大多数文本编辑器和IDE都拥有优秀的Go开发工具(https://oreil.ly/MwCWT)。两个最流行的Go开发环境是Visual Studio Code和Goland。
1.5.1 Visual Studio Code
如果想寻找一个免费的开发环境,微软的Visual Studio Code(https:// oreil.ly/zktT8)是最好的选择。自2015年发布以来,VS Code已经成为最受开发者欢迎的源代码编辑器。它默认不支持Go语言,但可以通过从插件库中下载Go语言插件使其支持Go开发环境。
VS Code对Go的支持依赖于第三方工具。这包括Go开发工具、Delve调试器(https://oreil.ly/sosLu)和gopls(https://oreil.ly/TLapT),gopls是一个由Go团队开发的Go Language Server(基于微软的Language Server Protocal开发的Go语言插件)。虽然需要自己安装Go开发工具包,但Go插件可以为你安装Delve和gopls。
Language Server是API的标准规范,使编辑器能够实现智能的代码编辑,如代码自动补全、分析和查找用法。请参阅语言服务器协议(https://oreil.ly/2T2fw)。
设置好工具之后,就可以打开并操作项目。图1-1显示了项目窗口。Getting Started with VS Code Go(https://oreil.ly/XhoeB)演示了如何使用VS Code Go扩展。

图1-1:Visual Studio Code
1.5.2 GoLand
GoLand(https://oreil.ly/6cXjL)是JetBrains公司推出的专门针对Go的IDE。虽然JetBrains最出名的是以Java为中心的工具,但GoLand的确是一个优秀的Go开发环境。如图1-2所示,GoLand的用户界面与IntelliJ、PyCharm、RubyMine、WebStorm、Android Studio或其他的JetBrains IDE很相似。它对Go的支持包括重构、语法高亮、代码补全和导航、文档提示、调试器、代码覆盖等。除了支持Go以外,GoLand还包括JavaScript/HTML/CSS和SQL数据库工具。与VS Code不同,GoLand作为集成开发环境,不需要额外的安装和配置即可工作。

图1-2:GoLand
如果你已经订阅了IntelliJ Ultimate(或者有资格获得免费许可),可以通过添加插件来获得Go支持。否则,你就必须付费使用GoLand。
1.5.3 The Go Playground
The Go Playground是Go开发另一个重要的工具,且不需要安装。访问The Go Playground(http://play.golang.org)会看到一个如图1-3所示的窗口。如果你使用过irb
、node
或python
等命令行环境,会发现The Go Playground也有非常类似的感觉。它有一个区域可以让你尝试和分享程序代码。在窗口中输入程序,单击Run按钮就可以执行代码。单击Format按钮可以对代码运行go fmt
,勾选Imports复选框可以清理导入,就像goimports
一样。单击Share按钮会创建一个唯一的URL,你可以把它发送给其他人,让他们查看你的程序,或者在未来的某一天返回你的代码(代码的URL可以存放很长一段时间,但我们不能使用playground作为源代码库)。

图1-3:The Go Playground
如图1-4所示,你甚至可以通过使用类似-- filename.go --
的行分隔每个文件来模拟多个文件。

图1-4:The Go Playground支持多个文件
注意,The Go Playground是在其他人的计算机(这里是Google的计算机)上运行的,所以我们不能随心所欲地使用。它总是运行最新的稳定版本的Go,但是无法建立网络连接,运行时间过长或使用内存过多的进程会被停止。如果我们的程序依赖于时间,请注意当前时间被设置为2009年11月10日,23:00:00 UTC(Go最初发布的日期)。但即使有这些限制,The Go Playground也是一种非常有用的方式,可以在本地不创建新项目的情况下尝试新想法。本节提供了The Go Playground的链接,这样你无须复制代码便可在计算机上运行代码示例。
千万不要把敏感信息(如个人身份信息、密码或私钥)放在你的The Go Playground中!因为一旦你单击Share按钮,这些信息就会被保存到谷歌的服务器上,任何获得URL的人都可以访问。如果你不小心这样做了,请通过security@golang.org联系谷歌,并说明需要删除内容的原因。