编写我们的第一个Go程序-hello world

74 阅读6分钟

学习编程语言最好的方式莫过于亲自动手写代码了。让我们继续编写我们的第一个Go程序。

设置开发环境

让我们创建一个目录,在那里我们要写我们的hello world程序。打开终端,运行以下命令。

mkdir ~/Documents/learngo/  

上述命令将在当前用户的Documents目录下创建一个名为learngo 的目录。请随意在你希望代码所在的地方创建该目录。

hello world

使用你最喜欢的文本编辑器在learngo 目录中创建一个名为main.go 的文件,内容如下。

package main

import "fmt"

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

Go中的惯例是将包含main 函数的文件命名为main.go ,但其他名称也可以。

运行Go程序

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

1.Go安装

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

cd ~/Documents/learngo/  

接下来运行下面的命令。

go install  

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

当你试图安装该程序时,你可能会遇到以下错误。

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

上述错误实际上意味着,go install 无法找到安装已编译二进制文件的位置。因此,让我们继续给它一个位置。这个位置是由GOBIN 环境变量决定的。

export GOBIN=~/go/bin/  

上面的命令指定go install 应该把编译好的二进制文件复制到路径~/go/bin/ 。这是 Go 二进制文件的常规位置,但也可以随意更改为任何你想要的位置。现在再试着运行go install ,程序的编译和运行应该没有任何问题。

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

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

~/go/bin/learngo

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

Hello World  

祝贺你!你已经成功运行了你的第一个Go程序。

如果你想避免每次运行程序时都输入整个路径~/go/bin/learngo ,你可以在PATH中加入~/go/bin/

export PATH=$PATH:~/go/bin  

现在你只要在终端输入learngo ,就可以运行该程序了。

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

2.go build

运行程序的第二个选择是使用go buildgo buildgo install 很相似,只是它不安装(复制)编译后的二进制文件到路径~/go/bin/ ,而是在安装go build 的地方创建二进制文件。

在终端键入以下命令

cd ~/Documents/learngo/  

来改变当前目录为learngo

之后,输入下面的命令。

go build  

上述命令将在当前目录下创建一个名为learngo 的二进制文件。ls -al ,就会发现一个名为learngo 的文件被创建。

输入./learngo 来运行该程序。这也将打印

Hello World  

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

3.go run

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

在终端输入命令cd ~/Documents/learngo/ ,将当前目录改为learngo

之后,输入以下命令。

go run main.go  

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

Hello World  

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

在引擎盖下,go run 的工作与go build 很相似。它不是将程序编译并安装到当前目录,而是将文件编译到一个临时位置,并从该位置运行文件。如果你有兴趣知道go run 编译文件的位置,请运行带有--work 参数的go run

go run --work main.go  

在我的例子中,运行上述命令的结果是

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

WORK 键的值指定了程序将被编译到的临时位置。
在我的例子中,程序已经被编译到了/var/folders/23/vdjz4kt972g5nzr86wzrj9740000gq/T/go-build698353814/b001/exe 。这在你的情况下可能有所不同 :)

4.Go Playground

运行程序的最后一种方法是使用go playground。虽然这有一些限制,但当我们想运行简单的程序时,这种方法很方便,因为它使用浏览器,不需要在你的本地安装Go:)。我已经为hello world程序创建了一个游乐场。点击这里可以在线运行该程序。

你也可以使用go playground来与他人分享你的源代码。

现在我们知道了运行程序的4种不同方法,你可能会感到困惑,不知道该使用哪种方法。答案是,这取决于。一般来说,当我想快速检查逻辑或找出标准库函数的工作原理时,我就使用playground。在其他大多数情况下,我更喜欢go install ,因为它让我可以选择在终端的任何目录下运行程序,因为它将所有程序编译到标准的~/go/bin/ 路径。

对hello world程序的简短解释

下面是我们刚刚编写的hello world程序

package main 

import "fmt" 

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

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

package main-**每个go文件都必须以package name 语句开始。**包是用来提供代码的分隔和重用的。包的名称 **main**在这里被使用。main函数应该总是位于main包中。

import "fmt"- import语句用于导入其他软件包。在我们的例子中,fmt 包被导入,它将在main函数中被用来打印文本到标准输出。

func main()-func 关键字标志着一个函数的开始。main 是一个特殊的函数。程序的执行从main 函数开始。{} 大括号表示主函数的开始和结束。

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

该代码可在github上下载。

现在你可以继续学习Golang教程第三部分:变量,了解Go中的变量。