go
文章平均质量分 89
魏海龙
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
深度探索go语言
Go语言指针实现原创 2022-11-21 18:24:43 · 700 阅读 · 1 评论 -
go-生成器
生成器 得益于go的并发特性和channel强大的功能,go的生成器简单而高效 示例 package main import "fmt" func main() { repeat := func(done <-chan interface{}, values ...interface{}) <-chan interface{} { valueStream := make(ch...原创 2019-12-09 23:56:36 · 825 阅读 · 0 评论 -
pipeline模式
介绍 pipeline类似于unix中的管道,特征是将复杂的问题,分解成一个一个的简单的单元,每一个单元的输出结果是下一个单元的输入参数 不好的示例 下面是一个简单的pipeline的示例,他只有简单的两步操作,一个加1,一个乘以2 package main import "fmt" import "time" func main() { t := time.Now() for i :=...原创 2019-12-09 20:30:11 · 503 阅读 · 0 评论 -
or-channel
介绍 or-channel模式是将若干个done channel合并成一个单一的channel,如果其中有一个channel完成工作,则将所有的channel退出 示例 package main import "fmt" import "time" // 定义方法,因为or方法会有递归调用 var or func(...<-chan interface{}) <-chan inte...原创 2019-12-08 23:59:17 · 399 阅读 · 0 评论 -
防止goroutine泄漏
goroutine终止方式 goroutine运行时不会被垃圾回收,所以即使goroutine占用内容非常少,我们也需要注意goroutine泄漏问题,goroutine的终止方式有3中 完成了工作 遇到不可恢复的错误 被告知结束工作 泄漏的示例 package main import "fmt" func main() { doWork := func(ch <-chan int...原创 2019-12-08 23:37:44 · 257 阅读 · 0 评论 -
select-channel组合
select和channel的关系 select是将channel绑在一起的粘合剂,它将channel绑在一起的时候是随机选择channel的 示例 package main import "fmt" func main() { c1, c2 := make(chan interface{}), make(chan interface{}) close(c1) close(c2) va...原创 2019-12-08 21:26:09 · 659 阅读 · 0 评论 -
channel使用法则
Channel操作方式和状态 channel只有三种操作方式 Read Write Close 有4种状态 nil 打开且非空 打开且空 关闭的 有三种类型 只写 只读 可读可写 不同的操作对不同状态的channel产生的影响 操作方式 Channel状态 结果 Read nil 阻塞 Read 打开且非空 输出值 Read 打开且空 阻塞 Read 关闭的...原创 2019-12-08 20:40:27 · 39039 阅读 · 0 评论 -
go设计模式之Pool模式
什么是Pool模式 Pool模式用于提供固定数量的实例,通常约束创建昂贵实例的数量(比如数据库连接) sync.Pool go语言中的sync.Pool是这种模式的样例,这种数据类型可以被多个goroutine安全使用. Get方法返回可用实例给使用者,使用完成之后调用Put方法将实例放回Pool中,以供别的线程使用 代码示例 package main import "fmt" import "...原创 2019-12-08 19:56:28 · 698 阅读 · 0 评论
分享