1. 基础数据类型
- 数字类型: 整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且原生支持复数
- 布尔型: true、false
- 派生类型:
(a) 指针类型(Pointer)
(b) 数组类型
(c) 结构化类型(struct)
(d) Channel 类型
(e) 函数类型
(f) 切片类型
(g) 接口类型(interface)
(h) Map 类型
2. 基础语法
2.1 循环
go语言里面没有while,所以实现循环都是使用for
无限循环
1 | for { |
条件循环
1 | for i:=0; i <10 ; i++{ |
2.2 判断
跟其他语言一样,判断有大于(>) 、小于(<) 、等于(==)、不等于(!=)、大于等于(>=)、小于等于(<=)
1 | if i>10 { |
3.3 选择
1 | switch a { |
3. 基本语法
3.1 定义常量、全局变量、局部变量
定义常量使用 const
关键字
1 | const a int = 1 //必须要赋初值 |
全局变量,全局变量是在函数外定义并且必须要有var
关键字
1 | var b int = 10 //可以不用赋初值 |
局部变量,也就是在函数中定义的变量,可以省略 var
关键字
1 | var c int = 1 //最保守的写法 |
注意:在go中 _
这个小下划线被称为废弃数,如果某个值赋值给它则此值就被废弃不再使用了
3.2 定义数组、切片、map
定义数组,
1
2// 定义了一个大小为10的数组
var ids [10]int // 初始全为 0定义切片
1
2
3//切片与数组最大的不同就是,切片是变长的,它的容量可以自动扩充
var splice = make([]int,3) // 指定切片大小
var splice = make([]int,3,10) // 指定切片大小和容量
len 是这个切片初始化时的大小
cap 是这个切片的容量,当len大于cap时,此切片就会扩容,扩容为此时的cap的2倍
- 定义 map
1 | // 定义一个map,key为string类型,value为int类型 |
3.3 定义派生类型
- 定义结构体,也就是java中的bean对象
1 | type person struct{ |
- 定义接口
1 | type Ising interface { |
- 实现接口
go语言中只要一个实体实现了接口中的所有方法,那么这个实体就是实现了这个接口
1 | type person struct { |
4. 异常
4.1 异常处理
go语言中一般都是把错误当成返回值给调用的函数
1 | func test(name string)(int,error){ |
4.2 中断程序
当调用panic() 函数,该出错线程就会停止,而有的时候我们不想让它停止,我们可以 使用recover() 来恢复它
1 | // 不让线程终止 |
4.3 defer 函数
这个函数有点类似于java中的finally,都是在函数执行返回值之前做一些操作,一般都是执行一些关闭流的操作
1 | defer reader.close() |