Golang 101(Go语言101 中文版) v1.21.a
1.08 MB
608 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
中文(简体) | .mobi | 3 |
摘要 | ||
文档详细介绍了Go语言的结构体类型及其内存布局,包括字段声明、标签和内存对齐。还解释了函数的声明和调用形式,包括参数列表和返回值。类型内嵌的概念及其语法也得到了阐述,其他核心内容包括关键字和标识符的定义与用法。基本流程控制语法部分涵盖了条件分支、循环和switch-case结构。这些内容构成了Go语言的基础知识,帮助读者理解其语法和特性。 | ||
AI总结 | ||
### 总结
#### 结构体
1. **定义与语法**:
- 使用 `struct` 关键字定义,包含字段。
- 字段由名称和类型组成,也可以匿名内嵌类型。
- 结构体内存布局包含字段大小和填充字节,零字段结构体大小为零。
- 字段标签是字符串,通常用键值对表示,用于标识字段信息。
2. **示例**:
```go
struct {
title, author string
pages int
}
```
3. **特殊情况**:
- 相邻同类型字段可合并声明。
- 编译器添加填充字节以对齐内存地址。
#### 函数声明
1. **语法结构**:
- `func` 关键字开头,包含函数名、参数列表、返回值列表和函数体。
- 参数和返回值由名字和类型组成,支持多个返回值。
2. **示例**:
```go
func SquaresOfSumAndDiff(a int64, b int64) (s int64, d int64) {
x, y := a + b, a - b
s = x * x
d = y * y
return
}
```
3. **特点**:
- 支持多返回值,使用 `return` 语句终止函数。
- 参数和返回值声明类似变量声明,省略 `var` 关键字。
#### 类型内嵌
1. **定义**:
- 字段仅含类型,无需字段名,称为匿名字段或内嵌字段。
- 字段名由内嵌类型名决定,支持方法继承。
2. **示例**:
```go
var x struct {
string // 具名非指针类型
error // 具名接口类型
*int // 无名指针类型
P // 无名指针类型的别名
M // 无名类型的别名
http.Header // 具名映射类型
}
```
3. **应用场景**:
- 常用于代码简化和方法继承,特别是在结构体组合中。
#### Go语言简介
1. **语言特性**:
- 编译型、静态语言。
- 并发编程支持协程和通道。
- 内置容器类型(切片、映射)。
- 支持多态、接口、指针、闭包、延迟函数调用、类型推断。
- 内存安全、垃圾回收、跨平台。
- 从1.18起支持泛型。
2. **优势**:
- 简洁语法,易于学习。
- 标准库齐全,社区活跃。
#### 类型分类
1. **单一内存块类型**:
- 布尔、数值、指针、非类型安全指针、结构体、数组。
2. **多内存块分布类型**:
- 字符串、切片、映射、通道、函数、接口。
#### 关键字和标识符
1. **关键字**:
- 25个,包括 `func`, `var`, `chan`, `interface`, `map`, `struct` 等。
2. **标识符**:
- 以字母或下划线开头,包含字母、数字,与关键字不同名。
3. **作用**:
- 关键字用于语法结构,标识符用于命名变量、函数、类型等。
#### 流程控制语法
1. **基本结构**:
- `if-else` 条件分支。
- `for` 循环,支持传统和 `for-range` 两种。
- `switch-case` 多条件分支。
2. **跳转语句**:
- `break` 跳出循环或分支。
- `continue` 跳过循环体。
- `goto` 跳转到标签。
- `fallthrough`_Helper 层落通过。
3. **特性**:
- 支持协程和延迟函数调用。
- 特殊的 `select-case` 用于通道选择。
通过以上总结,可以清晰了解到Golang的结构体、函数、类型系统、语言特性和流程控制的核心内容。 |
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
601 页请下载阅读 -
文档评分