乐趣区

Go语言入门Hello-world

本文是「vangoleo 的 Go 语言学习笔记」系列文章之一。
官网: http://www.vangoleo.com/go/go-hello-world/

在上一篇文章你好,Go 语言中,我们对 Go 语言的历史和特点有了认识。接下来,我们就正式进入 Go 的学习了。
按照大部分编程语言的惯例,我们以经典的“Hello World”开始 Go 语言的学习之旅。

经典的“Hello World”案例来自于 1978 年出版的 C 语言圣经 <The C Programming Language>。很巧合的是该书的作者 Brian W. Kernighan 也是《Go 语言圣经》一书的作者。

本教程中,我会使用最方便的方式 Golang Playground 来体验 Go 语言。在浏览器中打开 https://play.golang.org,在页面直接编写 Go 代码,并运行。使用 Golang Playground 无需安装 Go,无需配置 Golang 的开发环境(比如环境变量),无需安装文本编辑器或 IDE。

大部分的 Hello World 教程都会从如何安装 Go,配置环境变量等开始。但是 Go 语言的安装和开发环境配置其实是一个比较复杂的话题。我希望在大家刚接触 Go 语言时,能对 go 语言有一个快速,直观的认识。而不要陷入如何配置 Go 的开发环境。配置 Go 的开发环境涉及到 Go 语言的另外两个概念:GOPATH 和 Go module。而这又会牵扯到 Go 语言混乱、悠久的依赖管理发展史。后续会有专门的章节来进行介绍。

使用 Go Playground

第一步:打开 https://play.golang.org,在编辑框中输入 Hello World 程序:

package main

import "fmt"

func main() {fmt.Println("Hello world") 
}

如下图所示:

第二步:点击“Run”按钮,可以看到程序的输出结果“Hello,world”。
恭喜你,已经编写了第一个 Go 程序,并正确地输出了结果。

Go 语言特性

虽然 Hello World 程序很简单,但是依然包含了 Go 语言的一些核心概念。接下来,我们就一行一行地解读 Hello World 程序。

第一行 package main
程序的第一行声明了名为 main 的 package。Go 语言的代码是通过 package 来组织的,package 的概念和其他语言里的 package,module 概念类似,是一个逻辑的,包含了相同功能代码的集合。一个 package 会包含一个或多个 .go 源代码文件。每一个源文件都是以 package 开头。比如我们的例子里是 package main。这行声明语句表示该文件是属于哪一个 package。

需要注意,package main 是一个比较特殊的 package。main package 是 Go 程序的入口。准确说,Go 程序的入口是名为 main 的 package 中的 main 方法(即例子中的 main 方法)。

第二行 :import
package 声明语句后紧跟着是 import 语句。import 语句会引入其他 package 到当前文件中,这样就可以在当前文件使用其他 package 中的变量,常量,类型,方法等。Go 的 import 和 Java 的 import,C++ 的 include 类似。
Go 标准库已经提供了 100 多个 package,fmt 这个 package 包含接受输入,格式化输出的各种函数。Println是其中的一个常用函数,可以格式化地输出一段文本。

第三行 :func main
第三行声明了一个函数,函数名为 main。在 Go 语言中使用 func 关键字来声明一个函数。格式为:

func 函数名(参数名 1 参数类型 1, 参数名 2 参数类型 2, ...) 返回类型 1, 返回类型 2, ...

比如下面的方法:

func sayHello(name string, age int) string

声明了一个 sayHello 方法。接收两个参数:string 类型的 name 和 int 类型的 age。并返回一个 string 类型的值。
前面也提到了,在 main 这个 package 里,main 函数也是一个特殊的函数,这是整个程序的入口(其实 C 系语言差不多都是这样)。

第四行 :fmt.Println
第四行是程序真正执行的逻辑,会输出“Hello world”。fmt 是通过 import 引入的包,是 go 标准库提供的包。Println 是 fmt 包中定义的一个方法,作用是将文本输出到标准输出。

Go 语言特点

通过 Hello world,我们可以发现 Go 语言的一些特点:

  • 语句的结尾不需要分号。这和 C 系语言,Java 等语言不同。
  • Go 语言不需要显示声明方法或变量的作用范围。即不用显式声明 public 或 private。其实 Go 语言是通过变量或方法名的首字母是大写还是小写来确定作用范围的。大写字母开头的为 public,小写字母开头的为 private。

还有一些 Go 的特点,由于 Hello world 程序比较简单,没有体现出来。这里也顺带说一下:

  • Go 语言声明变量和方法参数时,名字在前,类型在后。比如var name string。这和 C 系语言,Java 语言都不同。
  • Go 语言在代码格式上采取了很强硬的态度。go 提供的 gofmt 工具会将你的代码格式化为标准格式(这个格式化工具没有任何可以调整代码格式的参数,Go 语言就是这么任性),规定一种标准的代码格式可以规避掉无尽的无意义的圣战(撕逼)(也导致了 Go 语言的 TIOBE 排名较低,因为缺少撕逼的话题)。Go 的这种哲学可以保证当一个大团队一起开发和维护一个项目时,团队间的协作更加地标准,高效。

本文由 www.vangoleo.com 发布

退出移动版