基本组成结构
|
|
数据类型
基本类型
- 布尔型: ture or false
- 数字类型: int, float32, float64
- 字符串类型 string
派生类型
- 指针类型Pointer
- 数组
- 结构化类型struct
- Channel
- 切片
- Map
- interface
变量
变量申明
|
|
- 指定变量类型,如无初始化则为对应类型的默认值。数值型为0,布尔型为false,字符串为""
- 可以根据值自动判定类型
- 可以通过
:=
申明变量, 但仅能在函数中使用 - 变量可分为局部变量和全局变量,两种变量名称可以相同,优先考虑局部变量
- 全局变量一般使用因式分解格式
|
|
引用
- 基本类型属于值类型,变量直接指向内存中的值
- 其他类型属于引用类型,变量指向值坐在的内存地址
其他
- 局部变量申明后必须被使用
- 可以使用
a, b = b, a
交换同类型的变量 - 可以用空白标识符
_
用来抛弃值
常量
- 格式
|
|
- 只支持布尔型、数字型、字符串
- 枚举
|
|
- iota: 初始值为0,每增一行增加一次计数
|
|
运算符优先级
运算符 | 级别 |
---|---|
* / % « » & &^ | 5 |
+ - | ^ | 4 |
== != < > | 3 |
&& | 2 |
|| | 1 |
条件语句
- if else
|
|
- switch
|
|
- select
for循环语句
- 基本形式: for init; condition; post {}
- while: for condition {}
- 无限循环: for {}
- for-each: for i, s:= range strings {}
函数
- 格式
|
|
- 参数传递
- 值传递
- 引用传递
数组
- 申明
|
|
- 初始化
|
|
指针
- 申明
|
|
- 简单示例
|
|
结构体
- 申明
|
|
切片Slice
-
动态数组,长度可变
-
定义
- 不指定大小是数组
|
|
- 初始化
|
|
- 函数len和cap分别获取切片的长度和容量
- 函数append为切片追加一个或多个元素
- 函数copy(dst, src)拷贝切片
集合Map - 无序键值对
- 定义
|
|
- 判断元素是否存在
|
|
- 删除元素
|
|
接口
- 公共方法的抽象
- 示例
|
|
错误处理
- 内置错误接口
|
|
并发
goroutine
- 使用go关键字调用函数时会开启一个goroutine
通道channel
- 申明
|
|
- 发送数据
|
|
- 接收数据
|
|
- 可用range遍历
- 可关闭