Files
build-web-application-with-…/2.1.md
2012-09-20 16:25:16 +08:00

56 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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 <pkgname>`(在我们的例子里面,`<pkgname>``main`)这一句话是告诉我们当前这个文件属于哪个包,而`main`包是告诉我们当前这个包是一个可独立运行的包,编译之后是可执行文件。除了`main`之外,其它的包最后生成的都是放在`$GOPATH/pkg/$GOOS_$GOARCH`以Mac为例darwin_amd64下面的.a文件也就是包文件
>每一个可独立运行的Go程序必定包含一个`package main`,这个`main`包里面必定包含一个入口函数`main`函数,而这个函数没有任何参数,也没有返回值。
为了打印“Hello, world...”,我们调用了一个函数`Printf`,这个函数来自于`fmt`这个包,所以我们在第三行里面导入了系统级别的`fmt`包,`import "fmt"`
包的概念和Python的module相同它们都有一些特别的好处模块化能够把你的程序分成多个模块)和可重用性(每个模块都能被其它应用程序反复使用)。这里我们只是先了解一下包的概念,后面我们将会开始编写自己的包。
在第五行中,我们通过关键字`func`定义了一个`main`函数,函数体被放在`{}`大括号就像我们平时写的C、C++或Java一样。
大家可以看到`main`函数是没有任何的参数的我们接下来就学习如何编写带参数的、返回0个或多个值的函数。
第六行,我们调用了`fmt`包里面定义的函数`Printf`。大家可以看到,这个函数是通过`<package name>.<function>`的方式调用的这个和Python十分相似。
>前面提到过包名和包所在文件夹名可以是不同的此处的package name即为通过`package <pkgname>`声明的包名,而非文件夹名。
最后大家可以看到我们输出的内容里面包含了很多非ASCII码的字符。实际上Go是天生支持UTF-8的任何字符都可以直接输出你甚至可以用UTF-8中的任何字符作为标识符。
##结论
Go使用package和Python的模块类似来组织代码。`main.main()`函数(这个函数主要位于主包是每一个独立的可运行程序的入口点。Go使用UTF-8字符串和标识符(因为UTF-8的发明者也就是Go的发明者),所以它天生就具有多语言的支持。
## links
* [目录](<preface.md>)
* 上一节: [Go语言基础](<2.md>)
* 下一节: [Go基础](<2.2.md>)
## LastModified
* $Id$