介绍

Go有时也称为“Golang”,是 Google 于 2012 年发布的一种开源编程语言。Google 的目的是创建一种可以快速学习的编程语言。

自发布以来,Go 已在开发人员中广受欢迎,并用于从云或服务器端应用程序到人工智能和机器人技术的各种应用程序。本教程概述了如何下载和安装最新版本的 Go(当前版本1.16.7) 在 Ubuntu 20.04 服务器上,构建著名的Hello, World!应用程序,并将您的 Go 代码转换为可执行的二进制文件以备将来使用。

先决条件

本教程需要一个 Ubuntu 20.04 系统,该系统配置了具有sudo特权的非 root 用户和防火墙。

第 1 步 - 安装 Go

在此步骤中,您将在服务器上安装 Go。

首先,通过ssh以下方式连接到您的 Ubuntu 服务器:

1
ssh sammy@your_server_ip

接下来,导航到Web 浏览器中的官方 Go 下载页面。从那里,复制当前二进制版本的 tarball 的 URL。

在撰写本文时,最新版本是 go1.16.7. 要在 Ubuntu 服务器(或任何 Linux 服务器)上安装 Go,请复制以linux-amd64.tar.gz.

现在您已准备好链接,首先确认您位于主目录中:

1
cd ~

然后用于curl检索 tarball,确保将突出显示的 URL 替换为您刚刚复制的 URL。该-O标志确保将其输出到文件,并且该L标志指示 HTTPS 重定向,因为此链接取自 Go 网站并将在文件下载之前重定向到此处:

1
curl -OL https://golang.org/dl/go1.16.7.linux-amd64.tar.gz

要验证您下载的文件的完整性,请运行 sha256sum命令并将其作为参数传递给文件名:

1
sha256sum go1.16.7.linux-amd64.tar.gz

这将返回 tarball 的 SHA256 校验和:

1
2
3
Output
go1.16.7.linux-amd64.tar.gz
7fe7a73f55ba3e2285da36f8b085e5c0159e9564ef5f63ee0ed6b818ade8ef04 go1.16.7.linux-amd64.tar.gz

如果校验和与下载页面上列出的校验和匹配,则您已正确完成此步骤。

接下来,用于tar提取 tarball。此命令包括-C指示 tar 在执行任何其他操作之前更改到给定目录的标志。这意味着提取的文件将被写入/usr/local/目录,即安装 Go 的推荐位置..x标志告诉tar提取,v告诉它我们想要详细输出(被提取的文件的列表),并f告诉它我们将指定一个文件名:

1
sudo tar -C /usr/local -xvf go1.16.7.linux-amd64.tar.gz

虽然/usr/local/go是安装 Go 的推荐位置,但一些用户可能更喜欢或需要不同的路径。

第 2 步 - 设置 Go 路径

在此步骤中,您将在您的环境中设置路径。

首先,设置 Go 的 root 值,它告诉 Go 去哪里寻找它的文件。
您可以通过编辑该.profile文件来执行此操作,该文件包含系统每次登录时运行的命令列表。

使用您喜欢的编辑器打开.profile,它存储在您用户的主目录中。在这里,我们将使用nano:

1
sudo nano ~/.profile

然后,将以下信息添加到文件末尾:

1
2
3
sudo nano ~/.profile
. . .
export PATH=$PATH:/usr/local/go/bin

将此信息添加到个人资料后,保存并关闭文件。如果您使用过 nano,请按 CTRL+X,然后 Y,然后 ENTER

接下来,通过运行以下命令刷新您的配置文件:

1
source ~/.profile

之后,检查是否可以go通过运行go version以下命令执行命令:

1
go version

此命令将输出系统上安装的任何版本的 Go 的版本号:

1
2
Output
go version go1.16.7 linux/amd64

此输出确认您现在正在服务器上运行 Go。

第 3 步 — 测试您的安装

现在已经安装了 Go 并且为您的服务器设置了路径,您可以尝试创建您的 Hello, World!应用程序以确保 Go 正常工作。

首先,为您的 Go 工作区创建一个新目录,Go 将在该目录中构建其文件:

1
mkdir hello

然后进入你刚刚创建的目录:

1
cd hello

导入包时,你必须通过代码自己的模块来管理依赖项。您可以通过 go.mod使用以下 go mod init命令创建文件来执行此操作:

1
go mod init your_domain/hello

接下来,Hello, World!在您首选的文本编辑器中创建一个Go 文件:

1
nano hello.go

将以下文本添加到您的 hello.go文件中:

1
2
3
4
5
6
7
8
hello.go
package main

import "fmt"

func main() {
fmt.Println("Hello, World!")
}

然后,按CTRL+X、Y、 和保存并关闭文件ENTER。

测试您的代码以检查它是否打印了Hello, World!问候语:

1
2
3
go run .
Output
Hello, World!

该go run命令.go从hello您创建的新目录和导入的路径中的源文件列表编译并运行 Go 包。但是,您也可以使用它go build来制作一个可以节省您一些时间的可执行文件。

第 4 步 — 将您的 Go 代码转换为二进制可执行文件

该go run命令通常用作编译和运行需要频繁更改的程序的快捷方式。如果您已完成代码并希望在不每次编译的情况下运行它,您可以使用go build将代码转换为可执行的二进制文件。将您的代码构建为可执行二进制文件会将您的应用程序整合到一个文件中,其中包含执行二进制文件所需的所有支持代码。一旦你构建了二进制可执行文件,你就可以运行go install将你的程序放在一个可执行文件路径上,这样你就可以从系统的任何地方运行它。然后,您的程序将Hello, World!在出现提示时成功打印,您无需再次编译该程序。

试一试并运行go build。确保从hello.go存储文件的同一目录运行它:

1
2
3
go build


接下来,运行./hello以确认代码工作正常:

1
2
3
./hello
Output
Hello, World!

这确认您已成功将hello.go代码转换为可执行二进制文件。但是,您只能从该目录中调用此二进制文件。如果您想从服务器上的不同位置运行此程序,则需要指定二进制文件的完整文件路径才能执行它。

键入二进制文件的完整文件路径很快就会变得乏味。作为替代方案,您可以运行该go install命令。这类似于go build但不是将可执行文件留在当前目录中,go install而是将其放在$GOPATH/bin目录中,这将允许您从服务器上的任何位置运行它。

为了go install成功运行,您必须将您创建的二进制文件的安装路径传递给它go build。要查找二进制文件的安装路径,请运行以下go list命令:

1
go list -f ‘{{.Target}}’

这确认您已成功将 hello.go代码转换为可执行二进制文件。但是,您只能从该目录中调用此二进制文件。如果您想从服务器上的不同位置运行此程序,则需要指定二进制文件的完整文件路径才能执行它。

键入二进制文件的完整文件路径很快就会变得乏味。作为替代方案,您可以运行该 go install命令。这类似于 go build但不是将可执行文件留在当前目录中,go install而是将其放在 $GOPATH/bin目录中,这将允许您从服务器上的任何位置运行它。

为了 go install成功运行,您必须将您创建的二进制文件的安装路径传递给它 go build。要查找二进制文件的安装路径,请运行以下 go list命令:

1
go list -f ‘{{.Target}}’

go list生成存储在当前工作目录中的任何命名 Go 包的列表。该 f标志将导致 go list根据您传递给它的任何包模板以不同的格式返回输出。此命令告诉它使用 Target模板,这将导致 go list返回存储在此目录中的任何包的安装路径:

1
2
Output
‘/home/sammy/go/bin/hello

这是您创建的二进制文件的安装路径 go build。这意味着安装此二进制文件的目录是./home/<span class="highlight">sammy</span>/go/bin/

将此安装目录添加到系统的 shell 路径中。如果不同,请务必更改此命令的突出显示部分以反映系统上二进制文件的安装目录:

1
export PATH=$PATH:/home/sammy/go/bin/

最后,运行 go install编译安装包:

1
go install

只需输入即可尝试运行此可执行二进制文件 hello

1
2
hello
OutputHello, World!

如果您收到 Hello, World!输出,则您已经成功地使 Go 程序可以从服务器上的特定路径和未指定路径执行。