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 build。go build跟go 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 run和go 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的变量的内容!
感谢阅读,这是我第一次翻译,难免会有翻译不当的地方,如果有什么反馈和评论,欢迎提出来!
浙公网安备 33010602011771号