这是 Golang 教程系列中的第二篇教程。 请阅读我们之前的教程 Golang 简介和安装,以了解什么是 Golang 以及如何安装 Golang。

本教程适用于 Go 1.13 或更高版本。 如果你使用的是旧版本,请访问https://golangbot.com/hello-world/

学习编程语言最好的方法就是亲自动手编写代码。 让我们继续编写第一个 Go 程序。

搭建开发环境

让我们创建一个目录来编写 hello world 程序。打开终端并运行以下命令。

  1. mkdir ~/Documents/learngo/

上面的命令将在当前用户的 Documents 目录中创建一个名为 learngo 的目录。你可以随意在需要代码驻留的任何地方创建目录。

Hello World

创建一个名为 main.go 的文件。使用你喜欢的文本编辑器进入 learngo 目录,并写入以下内容。

  1. package main
  2. import "fmt"
  3. func main() {
  4. fmt.Println("Hello World")
  5. }

这是 Go 的一个约定,将包含 main 函数的文件命名为 main.go 。但其他名字也可以。

运行 Go 程序

运行 Go 程序有几种不同的方法。我们一个一个来看。

1. go install

运行 Go 程序的第一个方法是使用 go install 命令。让我们将 cd 放入刚才创建的 learngo 目录。

  1. cd ~/Documents/learngo/

接下来运行以下命令。

  1. go install

上面的命令将编译程序并安装(复制)二进制文件到位置 ~/go/bin。二进制文件的名称将是包含 main.go 的文件夹。在我们的例子中,它将被命名为 learngo。

在尝试安装程序时,你可能会遇到以下错误。

  1. go install: no install location for directory /home/naveen/Documents/learngo outside GOPATH
  2. For more details see: 'go help gopath'

上面的错误实际上意味着,go install 无法找到安装编译后的二进制文件的位置。我们来给它一个位置。此位置由GOBIN 环境变量控制。

  1. export GOBIN=~/go/bin/

上面的命令指定 go install 应该将编译后的二进制文件复制到路径 ~/go/bin/。这是 Go 二进制的传统位置,但是可以随意将其更改为你想要的任何位置。现在尝试运行去安装再次和程序应该编译和运行没有任何问题。

你可以在终端中输入 ls -al ~/go/bin/learngo,你会发现实际上 go install 已经将二进制文件放到了 ~/go/bin 路径中。

现在让我们运行编译后的二进制文件。

  1. ~/go/bin/learngo

上面的命令将运行 learngo 二进制文件并打印以下输出。

  1. Hello World

恭喜!你已经成功地运行了你的第一个 Go 程序。

如果你想避免在每次运行程序时键入整个路径 ~/go/bin/learngo,你可以将 ~/go/bin/ 添加到你的路径中。

  1. export PATH=$PATH:~/go/bin

现在你可以在终端中输入 learngo 来运行程序。

你可能想知道,当 learngo 目录包含多个 go 文件而不是 main.go 时,会发生什么。在这种情况下 go install 如何工作?请稍等,我们将在学习 packages 和 go modules 时讨论这些。

2. go build

运行程序的第二个选项是使用 go build。go build 与 go install 非常相似,只是它不会将编译后的二进制文件安装(复制)到路径 ~/go/bin/,而是在安装 go build 的位置内创建二进制文件。

在终端中输入以下命令

  1. cd ~/Documents/learngo/

将当前目录更改为 learngo。

之后,输入以下命令。

  1. go build

上面的命令将在当前目录中创建一个名为 learngo 的二进制文件。ls -al 将显示创建了一个名为 learngo 的文件。

键入 ./learngo 来运行程序。这个也会打印出来

  1. Hello World

我们已经成功地使用 go build 运行了我们的第一个 Go 程序:)

3. go run

运行程序的第三种方法是使用go run 命令。

在终端中键入命令 cd ~/Documents/learngo/,将当前目录更改为 learngo。

之后,输入以下命令。

  1. go run main.go

输入上述命令后,我们可以看到输出

  1. Hello World

go run 和 go build/go install 命令之间的一个细微区别是,go run 需要 .go 文件的名称作为参数。

在底层,go run 的工作原理与 go build 非常相似。它不是将程序编译并安装到当前目录,而是将文件编译到一个临时位置并从该位置运行文件。如果你想知道 go run 编译文件的位置,请运行 go run 带上 —work 参数。

  1. go run --work main.go

在我的示例中运行上述命令输出

  1. WORK=/var/folders/23/vdjz4kt972g5nzr86wzrj9740000gq/T/go-build698353814
  2. Hello World

WORK 键的值指定程序将被编译到的临时位置。

在我的例子中,程序已经编译到 /var/folders/23/vdjz4kt972g5nzr86wzrj9740000gq/T/go-build698353814/b001/exe 位置。你的情况可能有所不同:)

4. Go Playground

最后一种运行程序的方法是使用 go playground。尽管有一些限制,但是当我们想要运行简单的程序时,这个方法很有用,因为它使用浏览器,不需要安装到本地:)。我为 hello world 程序创造了一个 playground。点击这里在线运行程序。

你还可以使用 go playground 与他人共享源代码。

现在我们知道了运行程序的4种不同的方法,你可能在决定使用哪种方法时感到困惑。答案是,视情况而定。当我想快速检查逻辑或了解标准库函数如何工作时,我通常使用 playground。在大多数其他情况下,我更喜欢go install,因为它提供了一个选项,可以在终端的任何目录下运行程序,因为它将所有程序编译为标准的 ~/go/bin/ 路径。

hello world 程序的简短说明

这是我们刚刚编写的 hello world 程序

  1. package main
  2. import "fmt"
  3. func main() {
  4. fmt.Println("Hello World")
  5. }

我们将简要讨论程序的每一行的作用。在接下来的教程中,我们将深入讨论程序的每个部分。

package main —— 每个 go 文件必须以 package name 语句开始。包用于提供代码分隔和可重用性。这里使用的是包名 main。主函数应该始终在 main package 中。

import “fmt”——import 语句用于导入其他包。在我们的例子中,fmt 包被导入,它将在主函数中用于将文本打印到标准输出。

func main() ——func 关键字标记函数的开头。主要是一个特殊的功能。程序执行从 main 函数开始。{} 大括号表示主函数的开始和结束。

fmt.Println(“Hello World”) —— fmt 包的 Println 函数用于将文本写入标准输出。package.function() 是调用包中的函数的语法。

代码可以从 github 下载。

原文链接

https://golangbot.com/hello-world-gomod/