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