Go语言 | 青训营笔记

95 阅读2分钟

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中