Hello World

这个是我们Golang教程系列的第二个教程。如果还没读第一篇教程的,可以读取上一篇教程了解Go的信息和如何在你的电脑上安装Go

学习程序语言最好的方式就是上手编写程序。让我们接下来开始编写我们的第一个Go程序。

设置开发环境

先让我们在你想要放置Go程序的地方新建一个目录,打开终端命令行,执行下面的命令。

mkdir /Users/swon/Documents/learngo

上面的命令就是新建一个名称为learngo的文件夹,放置在当前用户的Document目录下。当然,你也可以随便创建文件夹到你任意想要放置的地方。

Hello World

在learngo文件夹里面创建一个文件命名为main.go,然后用你最喜欢的文本编辑器写下下面的内容。

package main

import "fmt"

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

从习惯上来说,一般都会把包含main函数的文件命名为main.go, 当然啦,你想要命名其他名字也是ok的。

运行go程序

下面是有几种不同的方式去运行Go程序,接下来让我们一个一个地看下。

1.go install

第一种运行Go程序的方法是使用go install命令。
让我们先进入我们刚才创建的learngo文件夹。

cd /Users/swon/Documents/learngo

然后,运行下面的命令

go install

上面的命令将会编译程序,并且会把生成的二进制文件复制都~/go/bin下面,而二进制文件的名称则会取main.go所在的文件夹名称。在我们的例子中,这个文件就会被命名成learngo。(注:~表示用户根目录,不是系统根目录哦)

你在运行命令的时候有可能会遇到下面的错误。

go install
go install: no install location for directory /Users/swon/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下面。

ls -al ~/go/bin/learngo
-rwxr-xr-x  1 swon  staff  1865408 12 20 21:14 /Users/swon/go/bin/learngo

现在,让我们来执行这个二进制文件

~/go/bin/learngo

上面的命令就会执行learngo二进制文件,并且打印出下面的内容。

Hello World

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

如果你想要避免每次都要输入整个路径~/go/bin/learngo来执行程序,你可以加~/go/bin到你的PATH环境变量。

export PATH=$PATH:~/go/bin

在命令行执行上面的语句后,你就可以只输入learngo就可以运行这个程序了。

你也许会疑惑,如果说当learngo文件下面除了main.go,还有很多其他的go文件,那么编译器是怎么样go install的呢?稍安勿躁,我们将会在学习模块时探讨这个问题。

注意: export只对当次登录终端有效,如果不想每次打开终端都export环境变量,可以修改.zshrc文件, vim ~/.zshrc后面加上

export GOBIN=~/go/bin
export PATH=$PATH:~/go/bin

保存后,执行source ~/.zshrc即可。

2.go build

第二种运行go程序的方式时使用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程序的方式是使用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是在哪个地方执行的,可以在输入go run的时候,带上--work参数。

go run --work main.go

执行上面的命令,在我的电脑上是这么输出的:

WORK=/var/folders/ln/zm93pz3s64x6lz86j7b66b5r0000gn/T/go-build4292227798
Hello World

WORK的值指明了程序编译的临时空间。
在我的电脑上,程序编译地址是/var/folders/ln/zm93pz3s64x6lz86j7b66b5r0000gn/T/go-build4292227798,当然,在你的电脑上也有可能不一样。

4.go Playground

最后一种运行Go程序的方式是使用go playground。尽管这个方法是有所限制的,但是在我们想要用浏览器运行一些简单的程序就非常简单,它不需要你在本地go install。

你也可以使用go playground来分享你的源码。

现在,我们知道了四种不同的运行go程序的方法,你可能会疑惑应该要使用哪种方法。答案呢,也是视乎情况而定。我通常使用playground是在我想要检查代码逻辑或是标准库的函数是怎么工作的时候。在更多的情况,我更喜欢使用go install,它可以任何目录下执行程序,因为它编译的所有程序都放在了~/go/bin目录下。

一个关于hello world程序的简短解释

下面是我们就是我们之前写的一个hello world程序

package main

import "fmt"

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

我们将简短地探讨下上面每一行的程序做了什么。在接下来的教程中,我们将会更深入地详述程序的每一个部分。

package main - 每一个go文件都必须以package name来开头

statement,包(package)是用来分割代码和重复使用代码的。包名main就是用在这里,而main函数,就要放在main的包里面。

import "fmt",这个引入语句是用来引入其他包的。在我们的例子中,我们引入fmt包用在main函数中用来标准输出。

func main,这个func字符就是标记着一个函数的开始,main是一个特殊的函数,一个程序执行就是从main函数开始的,而{}两个符号就标记着main函数的开始和结束。

fmt.PrintIn("Hello World"),这个PrintIn函数是来自fmt包的,是用来写入文本标准输出的。package.function()就是用来调用一个包里的函数的方式。

上面就是有关于本篇的内容。

下一篇,我们将要讲述Go的变量的内容!

感谢阅读,这是我第一次翻译,难免会有翻译不当的地方,如果有什么反馈和评论,欢迎提出来!

原文地址: https://golangbot.com/hello-world-gomod/