#2.1 你好,Go
在我们开始用Go写应用之前,我们先从最基本的程序开始。就像你造房子之前你不知道什么是地基一样,因此,在本小节中,我们要学习用最基本的语法让GO程序运行起来。
##程序
这就像一个传统,学习所有的语言,你应该学习编写的第一个程序就是如何输出hello world
准备好了吗?Let's Go
package main
import "fmt"
func main() {
fmt.Printf("Hello, world; καλημ ́ρα κóσμ or こんにちは世界\n")
}
输出如下:
Hello, world; καλημ ́ρα κóσμ or こんにちは世界
##详解
首先我们要了解一个概念,Go程序是通过package
来组织的
package <plaplapla>
(在我们的例子里面,plaplapla是main)这一句话是告诉我们当前这个文件属于那个包,而main包是告诉我们当前这个包是一个独立可运行的包,编译之后是可执行文件,除了main之外,其他的包最后生成的都是放在"$GOPATH/pkg/系统_架构“(以mac为例:darwin_amd64)下面的.a文件(也就是包文件)。
每一个Go的独立可运行的应用程序,必定包含有一个
package main
,这个main包里面必定包含有一个入口函数main函数,这个函数没有任何的参数,也没有的返回值
为了打印"Hello,world...",我们调用了一个函数Printf,这个函数来自于fmt这个包,所以我们在第三行里面导入了系统级别的fmt包,import "fmt"
包的概念和python的modules是同一个理念,都是有一些特有的好处:模块化(能够把你的程序分成多个模块)和重用性(每个模块都能被其他应用程序反复使用),这里我们只要先了解一下包的概念,后面我们将会开始编写自己的包
第五行,我们定义了一个main函数,我们通过func这个关键字,他的内容通过{
和}
组织,就和我们平常写的c、c++、Java一样
大家可以看到main函数是没有任何的参数的,但是我们接下来学习如何编写函数里面,函数是可以带参数的,而且可以不返回数据,返回一个或者多个数据
第六行,我们调用了fmt包里面定义的函数Printf,大家可以看到,这个函数的调用是通过<package name>.function
的方式调用的,这个和python是十分相似的
前面提到过,包名和包所在文件夹名可以是不同的,此处的package name即为通过
package <plaplapla>
声明的包名,而非文件夹名。
最后大家可以看到我们输出的内容里面包含了很多非ASCII码的字符,实际上,Go是天生支持UTF-8的,任何字符都可以直接输出
##结论
Go使用package(和Python的模块类似)来组织代码。main.main函数(这个函数主要位于主包)是每一个独立的可运行程序的入口点。Go使用UTF-8字符串和标识符(因为UTF-8的发明者也就是GO的发明者),所以它天生就具有多语言的支持。
$Id$