02.1. 你好,Go

在开始编写应用之前,我们先从最基本的程序开始。就像你造房子之前不知道什么是地基一样,编写程序也不知道如何开始。因此,在本节中,我们要学习用最基本的语法让 Go 程序运行起来。

程序

这就像一个传统,在学习大部分语言之前,你先学会如何编写一个可以输出 hello world 的程序。

准备好了吗?Let's Go!


package main

import "fmt"

func main() {
    fmt.Printf("Hello, world or 你好,世界 or καλημ ́ρα κóσμ or こんにちはせかい\n")
}

输出如下:

Hello, world or 你好,世界 or καλημ ́ρα κóσμ or こんにちはせかい

详解

首先我们要了解一个概念,Go 程序是通过 package 来组织的

package <pkgName>(在我们的例子中是 package main )这一行告诉我们当前文件属于哪个包,而包名 main 则告诉我们它是一个可独立运行的包,它在编译后会产生可执行文件。除了 main 包之外,其它的包最后都会生成 *.a 文件(也就是包文件)并放置在 $GOPATH/pkg/$GOOS_$GOARCH 中(以 Mac 为例就是 $GOPATH/pkg/darwin_amd64)。

每一个可独立运行的 Go 程序,必定包含一个 package main,在这个 main 包中必定包含一个入口函数 main,而这个函数既没有参数,也没有返回值。

为了打印 Hello, world...,我们调用了一个函数 Printf,这个函数来自于 fmt 包,所以我们在第三行中导入了系统级别的 fmt 包:import "fmt"

包的概念和 Python 中的 package 类似,它们都有一些特别的好处:模块化 (能够把你的程序分成多个模块) 和可重用性(每个模块都能被其它应用程序反复使用)。我们在这里只是先了解一下包的概念,后面我们将会编写自己的包。

在第五行中,我们通过关键字 func 定义了一个 main 函数,函数体被放在 {}(大括号)中,就像我们平时写 C、C++ 或 Java 时一样。

大家可以看到 main 函数是没有任何的参数的,我们接下来就学习如何编写带参数的、返回 0 个或多个值的函数。

第六行,我们调用了 fmt 包里面定义的函数 Printf。大家可以看到,这个函数是通过 <pkgName>.<funcName> 的方式调用的,这一点和 Python 十分相似。

前面提到过,包名和包所在的文件夹名可以是不同的,此处的 <pkgName> 即为通过 package <pkgName> 声明的包名,而非文件夹名。

最后大家可以看到我们输出的内容里面包含了很多非 ASCII 码字符。实际上,Go 是天生支持 UTF-8 的,任何字符都可以直接输出,你甚至可以用 UTF-8 中的任何字符作为标识符。

结论

Go 使用 package(和 Python 的模块类似)来组织代码。main.main() 函数(这个函数位于主包)是每一个独立的可运行程序的入口点。Go 使用 UTF-8 字符串和标识符(因为 UTF-8 的发明者也就是 Go 的发明者之一),所以它天生支持多语言。

本文章首发在 LearnKu.com 网站上。
上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~