Modified some sentence.

This commit is contained in:
Oling Cat
2012-09-20 22:09:31 +08:00
parent 9e4612acd5
commit 141501aa37
4 changed files with 257 additions and 255 deletions

28
2.1.md
View File

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