- go没有class
- go的package 类似类的概念,包中的方法如果想被外部访问必须大写
协程组成
- go逻辑处理器(和cpu数量有关)
- go调度器
异常处理
package main import ( "fmt" ) func main() { f1() f2() } func f1(){ fmt.Println("我是方法1") //抛出异常 panic("我是抛出错误") } func f2(){ fmt.Println("我是方法2") } + 抛出捕获 package main import ( "fmt" ) func main() { f1() f2() } func f1() { defer func() { if err := recover(); err != nil { fmt.Println("我捕获到一个错误:",err) fmt.Println("代码继续运行") } }() fmt.Println("我是方法1") //抛出异常 panic("我是抛出错误") } func f2() { fmt.Println("我是方法2") }
go的变量类型
- 值类型 :int float bool string 数组 结构体
- 引用类型 :指针 切片 管道 接口 map 函数
cgo 在go中调用c的类库
cgo 不支持c++的类,因为c++没有一个二进制接口规范,并且只支持c语言中的值类型和数据类型
go测试框架
- GoConvey 测试框架
- Gostub 打桩工具
- GoMock 假数据工具
- Monkey
Go函数的返回值
- 返回值,要不都定义变量要不都不定义
Go接口不用引入包
Go ++ 都是放到操作数之后,没有返回值不能用表达式