介绍
Go是一种编程语言,源于Google的挫败感。 开发人员不得不选择一种有效执行的语言,但需要很长时间才能编译,或选择一种易于编程但在生产中运行效率低下的语言。 Go旨在同时提供所有三种:快速编译,易于编程以及在生产中高效执行。
虽然Go是一种多功能编程语言,可用于许多不同的编程项目,但它特别适用于网络/分布式系统程序,并赢得了“云语言”的美誉。 它侧重于帮助现代程序员通过一系列强大的工具做更多事情,通过使格式成为语言规范的一部分来消除对格式化的争论,并通过编译为单个二进制文件来简化部署。 Go很容易学习,只需很少的关键词,这使它成为初学者和经验丰富的开发人员的绝佳选择。
本教程将指导您通过命令行使用Go安装和配置编程工作区。 本教程将明确介绍Ubuntu 18.04的安装过程,但一般原则可适用于其他Debian Linux发行版。
先决条件
您将需要安装了Ubuntu 18.04的计算机或虚拟机,以及对该计算机和Internet连接的管理访问权限。 您可以通过Ubuntu 18.04版本页面下载此操作系统。
第1步 – 设置Go
在此步骤中,您将通过从官方Go下载页面下载当前版本来安装Go。
为此,您需要找到当前二进制版本tarball的URL。 您还需要注意它旁边列出的SHA256哈希,因为您将使用此哈希来验证下载的文件 。
您将在命令行上完成安装和设置,这是一种与计算机交互的非图形方式。 也就是说,您不是点击按钮,而是键入文本并通过文本从计算机接收反馈。
命令行(也称为shell或终端 )可以帮助您修改和自动化您每天在计算机上执行的许多任务,并且是软件开发人员必不可少的工具。 有许多终端命令需要学习,可以让你做更强大的事情。 有关命令行的更多信息,请查看Linux Terminal简介教程。
在Ubuntu 18.04上,您可以通过单击屏幕左上角的Ubuntu图标并在搜索栏中键入terminal
来找到终端应用程序。 单击终端应用程序图标将其打开。 或者,您可以同时按下键盘上的CTRL
, ALT
和T
键以自动打开终端应用程序。
终端打开后,您将手动安装Go二进制文件。 虽然您可以使用包管理器(例如apt-get
,但通过手动安装步骤可以帮助您了解系统对具有有效Go工作区所需的任何配置更改。
在下载Go之前,请确保您在home( ~
)目录中:
cd ~
使用curl
检索从官方Go下载页面复制的tarball URL:
curl -O https://dl.google.com/go/go1.12.1.linux-amd64.tar.gz
接下来,使用sha256sum
验证tarball:
sha256sum go1.12.1.linux-amd64.tar.gz
运行上述命令时显示的哈希值应与下载页面上的哈希值相匹配。 如果没有,那么这不是有效文件,您应该再次下载该文件。
2a3fdabf665496a0db5f41ec6af7a9b15a49fbe71a85a50ca38b1f13a103aeec go1.12.1.linux-amd64.tar.gz
接下来,提取下载的存档并将其安装到系统上的所需位置。 将它保存在/usr/local
下是最佳实践:
sudo tar -xvf go1.12.1.linux-amd64.tar.gz -C /usr/local
您现在将在/usr/local
目录中有一个名为go
的目录。 接下来,递归地将此目录的所有者和组更改为root :
sudo chown -R root:root /usr/local/go
这将保护所有文件并确保只有root用户可以运行Go二进制文件。
注意 :虽然/usr/local/go
是官方推荐的位置,但有些用户可能更喜欢或需要不同的路径。
在此步骤中,您已在Ubuntu 18.04计算机上下载并安装了Go。 在下一步中,您将配置Go工作区。
第2步 – 创建Go工作区
您可以在安装Go后立即创建编程工作区。 Go工作区将在其根目录中包含两个目录:
-
src
:包含Go源文件的目录。 源文件是使用Go编程语言编写的文件。 Go编译器使用源文件来创建可执行的二进制文件。 -
bin
:包含Go工具构建和安装的可执行文件的目录。 可执行文件是在系统上运行并执行任务的二进制文件。 这些通常是由源代码或其他下载的Go源代码编译的程序。
src
子目录可能包含多个版本控制存储库(例如Git , Mercurial和Bazaar )。 这允许在项目中规范导入代码。 规范导入是引用完全限定的包的导入,例如github.com/digitalocean/godo
。
当程序导入第三方库时,您将看到github.com
, github.com
目录。 如果您使用的是像github.com
这样的代码存储库,那么您还可以将项目和源文件放在该目录下。 我们将在本步骤后面探讨这个概念。
以下是典型工作空间的外观:
.├── bin│ ├── buffalo # command executable│ ├── dlv # command executable│ └── packr # command executable└── src └── github.com └── digitalocean └── godo ├── .git # Git repository metadata ├── account.go # package source ├── account_test.go # test source ├── ... ├── timestamp.go ├── timestamp_test.go └── util ├── droplet.go └── droplet_test.go
从1.8开始,Go工作区的默认目录是用户的主目录,其中包含go
子目录或$HOME/go
。 如果您使用的是Go的早期版本而不是1.8,那么对于您的工作区使用$HOME/go
位置仍然是最佳做法。
发出以下命令为Go工作区创建目录结构:
mkdir -p $HOME/go/{bin,src}
-p
选项告诉mkdir
在目录中创建所有parents
,即使它们当前不存在。 使用{bin,src}
为mkdir
创建一组参数,并告诉它创建bin
目录和src
目录。
这将确保现在具有以下目录结构:
└── $HOME └── go ├── bin └── src
在Go 1.8之前,需要设置一个名为$GOPATH
的本地环境变量。 $GOPATH
告诉编译器在哪里可以找到导入的第三方源代码,以及您编写的任何本地源代码。 虽然它不再明确要求,但它仍然被认为是一种很好的做法,因为许多第三方工具仍然依赖于设置的这个变量。
您可以通过将全局变量添加到~/.profile
来设置$GOPATH
。 您可能希望根据shell配置将其添加到.zshrc
或.bashrc
文件中。
首先,使用nano
或首选文本编辑器打开~/.profile
:
nano ~/.profile
通过在文件中添加以下内容来设置$GOPATH
:
export GOPATH=$HOME/go
当Go编译并安装工具时,它会将它们放在$GOPATH/bin
目录中。 为方便起见,通常将工作区的/bin
子目录添加到~/.profile
PATH
:
export PATH=$PATH:$GOPATH/bin
这将允许您通过系统上任何位置的Go工具运行您编译或下载的任何程序。
最后,您需要将go
二进制文件添加到PATH
。 您可以通过将/usr/local/go/bin
到行尾来执行此操作:
export PATH=$PATH:$GOPATH/bin:/usr/local/go/bin
将/user/local/go/bin
到$PATH
可以使系统上的所有Go工具都可用。
要更新shell,请发出以下命令以加载全局变量:
. ~/.profile
您可以使用echo
命令验证$PATH
是否已更新并检查输出:
echo $PATH
您将看到$GOPATH/bin
将显示在您的主目录中。 如果以root
身份登录,则会在路径中看到root/go/bin
。
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/go/bin:/usr/local/go/bin
您还将看到/usr/local/go/bin
的Go工具的路径:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/go/bin:/usr/local/go/bin
通过检查Go的当前版本来验证安装:
go version
我们应该收到这样的输出:
go version go1.12.1 linux/amd64
现在您已创建工作空间的根并设置了$GOPATH
环境变量,您可以使用以下目录结构创建未来的项目。 此示例假定您使用github.com
作为您的存储库:
$GOPATH/src/github.com/username/project
举例来说,如果您正在处理https://github.com/digitalocean/godo
项目,它将存储在以下目录中:
$GOPATH/src/github.com/digitalocean/godo
此项目结构将使用go get
工具使项目可用。 它稍后也有助于提高可读性。 您可以使用go get
命令验证这一点并获取godo
库:
go get github.com/digitalocean/godo
这将下载godo
库的内容并在您的机器上创建$GOPATH/src/github.com/digitalocean/godo
目录。
您可以通过列出目录来检查它是否成功下载了godo
包:
ll $GOPATH/src/github.com/digitalocean/godo
您应该看到与此类似的输出:
drwxr-xr-x 4 root root 4096 Apr 5 00:43 ./drwxr-xr-x 3 root root 4096 Apr 5 00:43 ../drwxr-xr-x 8 root root 4096 Apr 5 00:43 .git/-rwxr-xr-x 1 root root 8 Apr 5 00:43 .gitignore*-rw-r--r-- 1 root root 61 Apr 5 00:43 .travis.yml-rw-r--r-- 1 root root 2808 Apr 5 00:43 CHANGELOG.md-rw-r--r-- 1 root root 1851 Apr 5 00:43 CONTRIBUTING.md...-rw-r--r-- 1 root root 4893 Apr 5 00:43 vpcs.go-rw-r--r-- 1 root root 4091 Apr 5 00:43 vpcs_test.go
在此步骤中,您创建了一个Go工作区并配置了必要的环境变量。 在下一步中,您将使用一些代码测试工作区。
第3步 – 创建一个简单的程序
现在您已经设置了Go工作区,创建一个“Hello,World!”程序。 这将确保正确配置工作区,并使您有机会更熟悉Go。 因为我们正在创建单个Go源文件,而不是实际项目,所以我们不需要在我们的工作区中执行此操作。
在您的主目录中,打开命令行文本编辑器(如nano
,然后创建一个新文件:
nano hello.go
在新文件中编写程序:
package mainimport "fmt"func main() { fmt.Println("Hello, World!")}
此代码将使用fmt
包并使用Hello, World!
调用Println
函数Hello, World!
作为论点。 这将导致短语Hello, World!
在程序运行时打印到终端。
按CTRL
和X
键退出nano
。 提示保存文件时,按Y
然后按ENTER
。
退出nano
并返回shell后,运行程序:
go run hello.go
hello.go
程序将使终端产生以下输出:
Hello, World!
在此步骤中,您使用基本程序验证是否正确配置了Go工作区。
结论
恭喜! 此时,您在Ubuntu机器上设置了Go编程工作区,可以开始编码项目!