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