Go语言基础
1.package 表示包,每一个程序都必须有主包。
2.import 引用包
package main
import("fmt")
func main(){
fmt.Println("Hello world")
}
3.GO是强类型语言,声明方式有如下:
1.var name = value
2.name := value
3.声明常量把var改成const
4.if-else-判断语句
与C++不同的是,if判断语句不需要加括号,但同时条件语句的代码块必须用大括号包起来。
5.for循环语句
三段条件不需要用小括号,同时也可以省略其中任何一段,也不需要写分号表示某一段被省略。
6.swift语句
swift语句后面的条件代码可以转换成变量,在每一个case后面进行判断,也可以和C++一样,但是每执行完一个case便会直接跳出swift语句,不需要手动加break;
7.切片往往比数组更常用。
采用make()创建切片,创建要规定元素的数据类型以及长度。
使用append()添加。因为本质是copy()函数传递。
Go语言进阶与依赖管理
1.并发与并行
并发:多线程在一个核的CPU运行,微观体现在线程交替运行。
并行:多线程在多个核的CPU运行,微观体现在多线程同步运行。
两者宏观上都是一起运行的。
2.协程和线程
协程:用户态,栈KB级别。
线程:内核态,栈MB级别。
Tips:在fun前面加上go就可以出发并行。 通过共享内存实现通行
3.Channel make(chan 元素类型,(缓冲大小)) make(chan int,2)
栗子
`func CalSquare(){
src:=make(chan int)
dest:=make(chan int,3)
go func(){
defer close(src)
for i:=0;i<10;i++{
src<-i
}()
}
go func(){
defer close(src)
for i:=range src{
desk<-i-i
}
}()
for i:= range dest{
println(i)
}
}`
通过range遍历,实现A协程到B协程的通信。
4.WaitGroup(ADD(),DONE(),WAIT())
Go语言工程实践之测试
1.测试(回归测试,集成测试,单元测试(代码覆盖率))
Tips: 1.所有测试文件以——test.go结尾 2.func testXxx(*testing.T) 3.初始化逻辑放到TextMain中