2021-01-27 09:44:18
Go 语言的基础语法包括多个关键组成部分,以下是对其核心内容的清晰归纳:
程序结构
Go 语言程序通常由包(package)声明、导入包(import)和主函数(main)组成。
每个 Go 文件都应以 package <name> 开头,表示该文件所属的包。
使用 import 关键字导入其他包,例如 import "fmt" 用于格式化输入输出。
主函数 func main() 是程序的入口点。
标记(Tokens)
Go 程序由多个标记组成,包括关键字、标识符、常量、字符串和符号。
例如,fmt.Println("Hello, World!") 这条语句由 6 个标记组成:fmt、.、Println、(、"Hello, World!" 和 )。
关键字
Go 语言有一系列保留关键字,如 break、case、chan、const、continue、default、defer、else、fallthrough、for、func、go、goto、if、import、interface、map、package、range、return、select、struct、switch、type 和 var。
这些关键字在 Go 语言中有特殊含义,不能用作标识符。
标识符
标识符用于命名变量、函数、类型等程序实体。
标识符由字母、数字和下划线组成,且不能以数字开头。
Go 语言是区分大小写的。
常量
常量是在程序运行期间其值不能被改变的量。
常量可以是字符、字符串、布尔值或数值。
常量使用 const 关键字定义,例如 const PI float64 = 3.1415926。
变量
变量是在程序运行期间其值可以被改变的量。
变量使用 var 关键字定义,例如 var x int = 10。
Go 语言支持类型推断,可以省略变量类型,例如 var x = 10(此时 x 的类型被推断为 int)。
还可以使用短变量声明 := 来同时声明和初始化变量,例如 x := 10。
运算符
Go 语言支持多种运算符,包括算术运算符(+、-、*、/、%)、关系运算符(==、!=、>、<、>=、<=)、逻辑运算符(&&、||、!)和位运算符(&、|、^、<<、>>)等。
控制结构
Go 语言支持条件语句(if、else、else if)、循环语句(for)和选择语句(switch、case、default)。
for 循环是 Go 语言中唯一的循环结构,但可以通过不同的形式实现类似 while 的功能。
switch 语句支持多条件匹配,并且不需要 break 语句来退出每个 case。
函数
函数是执行特定任务的代码块。
函数使用 func 关键字定义,例如 func add(a int, b int) int { return a + b }。
函数可以接受参数并返回结果,支持多返回值。
数组与切片
数组是固定长度的同类型元素序列,使用 [n]T 语法声明,其中 n 是长度,T 是元素类型。
切片是对数组的抽象,提供动态大小的、灵活的视图,使用 []T 语法声明。
映射(Map)
映射是一种无序的键值对集合,使用 map[K]V 语法声明,其中 K 是键类型,V 是值类型。
映射通过键来快速检索、更新或删除值。
结构体(Struct)
结构体是一种复合数据类型,用于组合多个不同类型的字段。
结构体使用 type 关键字和 struct 关键字定义,例如 type Person struct { name string; age int }。
接口(Interface)
接口定义了一组方法签名,任何实现了这些方法的类型都隐式地实现了该接口。
接口使用 type 关键字和 interface 关键字定义,例如 type Shape interface { area() float64 }。
并发编程
Go 语言通过 goroutine 和 channel 支持并发编程。
goroutine 是轻量级线程,由 Go 运行时管理。
channel 是 goroutine 之间的通信机制,用于传递数据。
错误处理
Go 语言通过 error 类型和 defer、panic、recover 关键字支持错误处理。
函数通常返回 error 类型来表示操作是否成功。
defer 语句用于延迟执行函数调用,通常用于资源清理。
panic 和 recover 用于处理运行时恐慌和恢复程序状态。