2021年1月1日

单例模式

摘要: 为了节约系统资源,有时需要确保系统中某个类只有唯一一个实例,当这个唯一实例创建成功之后,我们无法再创建一个同类型的其他对象,所有的操作都只能基于这个唯一实例。为了确保对象的唯一性,我们可以通过单例模式来实现, 1 使用如下的方式,每次都会赋值一份数据,但事实上并没有这个必要,浪费了内存, type 阅读全文

posted @ 2021-01-01 17:38 吃我一枪 阅读(75) 评论(0) 推荐(0) 编辑

WaitGroup用法

摘要: 1 Add()用来设置要等待的goroutine的数量,不能为负,Done()用来表示goroutine已经完成了,减少一次计数器,Wait()用来等待所有需要等待的goroutine完成。特别注意这个传递的时候要传指针,传值的话是错误的, package main import ( "fmt" " 阅读全文

posted @ 2021-01-01 12:09 吃我一枪 阅读(348) 评论(0) 推荐(0) 编辑

select+chan控制goroutine结束

摘要: 1 一旦向chan中写入值了,select就执行之前阻塞的该通道,执行完后,再执行return,结束goroutine, func main() { stop := make(chan bool) go func() { for { select { case <-stop: fmt.Println 阅读全文

posted @ 2021-01-01 11:42 吃我一枪 阅读(213) 评论(0) 推荐(0) 编辑

导航