首页 > 编程笔记

Go语言代码的结构组成

硅谷创业之父保罗·格雷厄姆在《黑客与画家》中提到,软件工程师与画家、建筑师、作家一样,也是创造者。一个好的程序,不仅仅是技术的产物,更是技术与艺术相结合的产物。每个程序都有其自身的结构,而结构又深深地影响着程序的效率,毋庸置疑,程序的结构是功能与效率的承担者。

下面通过《第一个Go语言程序》一节中的 Hello World 程序来了解Go语言的基本结构。
package main
import "fmt"
func main() {
    /*输出"Hello World!"*/
    fmt.Println("Hello World!")
}
第 1 行 package main 定义了包名。必须在源文件中非注释的第 1 行指明这个文件属于哪个包,例如 package main。package main 表示一个可独立执行的程序,每个Go语言应用程序都需要包含一个名为 main 的包,并且该包中包含一个名为 main() 的函数(该函数是Go语言可执行程序的执行起点,既不能带参数,也不能定义返回值)。

第 2 行 import "fmt" 中 import 语句用于导入该程序所依赖的包。由于本示例程序中用到了 Println() 函数,而该函数属于 fmt 包,所以需要导入 fmt 包,fmt 包实现了格式化 I/O(输入/输出)。

第 3 行 func main() 是程序入口。所有Go语言函数都是以关键字 func 开头的,每一个可执行程序都必须包含一个 main() 函数,这个 main() 函数通常是程序启动后第一个执行的函数,如果有 init() 函数则会先执行 init() 函数。

第 4 行 /*...*/ 是程序的注释,在程序执行时,注释的部分将被程序忽略,不会执行。

第 5 行 fmt.Println(...) 用来将字符串输出到控制台,并在最后自动增加一个换行字符 \n。使用 fmt.Print("Hello, World!\n") 也会得到相同的结果。

除此之外,还有以下几点值得注意:

优秀文章