Golang语言教程之hello,world
- 2019 年 11 月 26 日
- 筆記
学习新语言通常从hello,world开始,本文通过hello,world示例代码来介绍一下Golang 语言的基础知识。
package main import "fmt" func main () { fmt.Println("Hello,世界") }
基础介绍
Go 不同于PHP,它是编译型的语言,Go的工具链将程序的源文件转变成机器相关的原生二进制指令。 这些工具可以通过单一的go 命令配合其子命令进行使用。 今天主要讲两个子命令: 最简单的子命令是run ,它将一个或多个以.go 为后缀的源文件进行编译、链接, 然后运行生成的可执行文件。
go run helloworld.go
// 输出:
Hello,世界
Go 原生地支持Unicode ,所以它可以处理所有国家的语言。 另外一个子命令是build 它可以编译输出成一个可复用的二进制程序
go build helloworld.go
这条命令生成了一个叫做helloworld 的二进制程序 它可以不用进行任何其他处理,随时执行:
./helloworld
// 输出:
Hello,世界
代码讲解
Go 代码是使用包来组织的,包类似于PHP语言中的模块 一个包由一个或多个.go 源文件组成,放在一个文件夹中,通常该文件夹的名字描述了包的作用 package 包声明 每一个源文件的开头都以package 声明,指明这个文件属于哪个包 import 导入声明 后面跟着它导入的其它包的列表,以import 声明 例子里面只导入了一个fmt 包,如果导入多个包,有两种方式: 方式1:
import "fmt" import "os"
方式2:
import ( "fmt" "os" )
Go 的标准库中有100多个包,每个包中又有许多完成编写程序时的一些常规任务的函数 特殊的包 – main包 main包比较特殊,它用来定义一个独立的可执行程序,而不是库 main包中的main函数也是特殊的,它总是程序开始执行的地方,通常main函数会调用其它包中的函数来做更多的事情 必须精确导入程序需要的包,在缺失导入或者存在不需要的包时,编译会失败,这种严格的要求可以防止程序中引用不需要的包 程序声明 然后是一些程序声明(函数、变量、常量、类型),通常以func、var、const、type 开头 一般情况下,声明的顺序是随意的 示例中在import 导入声明后面,只声明了一个函数,这个函数只调用了一个其他函数 一个函数的声明由func 关键字、函数名、参数列表(main 函数为空)、返回值列表(可以为空)、函数体(放在大括号内)组成 Go 和PHP 还有一个不同的地方是,Go 代码不需要在语句后面使用分号结尾,除非有多个语句写在同一行,实际上跟在特定符号后面的换行符被转换为分号了,所以 在什么地方换行会影响Go 代码的解析
代码格式化
Go 对于代码的格式化要求非常严格。这里又要讲一个go 命令的子命令fmt 它可以格式化指定包里的所有文件或者当前文件夹中的文件 许多编辑器可以配置为每次保存文件时自动运行go fmt 此外推荐一个可以按需管理导入声明的插入和移除的工具 goimports 它不是标准发布的一部分,可以通过执行下面命令获取到: go get golang.org/x/tools/cmd/goimports
总结
本文通过helloworld 示例程序,介绍了Go 程序如何运行、Go 程序的组成和一些Go 命令介绍,其中需要特别强调的是Go 代码中package 包声明,import 导入 声明、程序声明的顺序必须按照示例代码中排列,不可随意排列。