Go语言入门-工程实践-基础语言 | 青训营笔记

207 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记

1.语言进阶

1.1 Goroutine

线程:用户态

协程:内核态。线程跑多个协程

在函数前面加上go即可让函数变为并发函数:

func hello(i int){
    println("hello goroutine :" + fmt.Sprint(i))
}
func HelloGoRoutine(){
    for i := 0; i <5; i++{
        go func(j int){
           hello(j)
        }
    }
    time.Sleep(time.Second)
}

1.2 Communicating Sequential Process

提倡通过通信共享内存

1.3 Channel

src := make(chan元素类型,[缓冲大小])

1.4 并发安全 Lock

lock sync.Mutexd 在并发地对变量计算时如果不加锁结果可能不对

1.5 WaitGroup

可以用来实现协程的同步阻塞

2. 依赖管理

2.1.1 GOPATH

多个项目可能会依赖一个库的不同版本-》无法实现package的多版本控制

2.1.2 Go Vendor

同一个项目也可能需要一个库的不同版本!-》无法控制依赖的版本

2.1.3 go Module

2.2 依赖管理三要素

2.2.1 配置文件 描述依赖 go.mod

2.2.2 中心仓库管理依赖库 Proxy

依赖分发 如果我们直接依赖github上面的代码,将无法保证构建稳定性,依赖可用性,第三方压力(作者可以增删改源码),这个时候我们需要go proxy 他是一个服务站点,会缓存源站中的内容

2.2.3 本地工具

3. 测试

4. 项目实战

4.1分层结构 数据层 逻辑层 视图层 4.2 组件工具 gin

链接:www.topgoer.com/gin%E6%A1%8…

简介:

  • Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点
  • 对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错
  • 借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范

go mod