上一篇文章记录 Go 项目的结构:模块、包和版本,紧接着该篇文章将记录 Go 语言的语言结构和基础语法。
学习编程语言的第一个可运行的示例,输出 Hello World。
main.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
第一行代码 package main
定义了包名。
在源文件中非注释的第一行进行包声明,指明该源文件属于哪个包,如:package main
。
包 main 是一个特殊的包,表示一个可独立执行的程序,可执行的 Go 应用程序都包含一个名为 main 的包。
代码 import "fmt"
告诉 Go 编译器这个程序需要使用 fmt 包内的函数或其他元素(fmt 包实现了格式化 IO 输入/输出的函数)。
引入包才可以使用包内的函数或其他元素。
一个 import 关键字可以引入多个包,示例:
import (
"fmt"
"math"
)
这里以 main 函数为例简单认识一下函数,后面有必要进行单独的讲解。
使用关键字 func
定义函数,紧跟着声明函数名、函数入参和函数返回值。
// 语句声明该函数名为 main;没有入参和返回值;紧跟着代码块
func main() {
}
// 语句声明该函数名为 max;入参是 int 类型的参数 a 和 b;返回值是 int 类型;紧跟着代码块
func max(a, b int) int {
}
main 函数
这个 main 函数是程序开始执行的函数,是每一个可执行程序所必须包含的。
一般来说都是在启动后第一个执行的函数(如果有 init 函数,init 函数则会在 main 之前执行该函数)。
导出函数
函数的导出:允许从另一个包访问该函数。
Go 语言通过函数名第一个字符为 Unicode 大写字母标示导出的函数。
注释在程序执行时将被忽略,是为了方便开发人员理解代码逻辑的说明文本,。
单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。
多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段。
从上面的例子,已经对 Go 源文件有了基本认识,接下来再认识一些语法。
Go 程序可以由多个标记组成,可以是关键字、标识符、常量、字符串或符号。
可以理解一个 Go 语句就是通过这些标记组合形成,而标记就是对 Go 中所有元素的称呼。
例如在上面的示例 fmt.Println("Hello, World!")
中就是多个标记组成:fmt
、.
、Println
、(
、"Hello, World!"
、)
。
在 Go 程序中,默认一行代表一个语句结束,所以一般不需要同其他语言使用符号 ;
表示一个语句的结束。
如果多个语句写在同一行,它们则必须使用 ;
人为区分。
可以理解为换行符会由编译器自动识别完成语句划分。
标识符用来命名变量、类型等程序实体。
一个标识符实际上就是一个或是多个字母(AZ、az)数字(0~9)、下划线_组成的命名,但是第一个字符不能是数字。
例如:demo
、theName
Go 语言的字符串连接可以使用符号 +
实现字符串连接。
// goStr 将为 HelloWorld
var goStr = "Hello" + "World";
列举 Go 代码中的关键字或保留字。
break | default | func | interface | select |
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
还有一些预定义标识符。
bool | true | false | int | uint |
int8 | uint8 | int16 | uint16 | int32 |
uint32 | int64 | uint64 | float32 | float64 |
complex | complex64 | complex128 | byte | nil |
string | panic | println | real | |
copy | append | cap | close | new |
imag | iota | len | make | uintptr |
recover |