不得不说一句,我开始写的部分笔记没有发表,只是保存起来,为什么现在看不到了呢
---------------------------------------------------------------------------
不得不说的channel
1、channel只能使用make 来创建
2、channel分为两种:一种是有buffer的,另一种是没有buffer的。
备注:有缓冲的channel,先放后取
无缓冲的channel,先取后放
其实说的形象点就是:无缓冲相当于TCP,有缓冲相当于UDP
套用网上文章:
有缓冲
无缓冲的 就是一个送信人去你家门口送信 ,你不在家 他不走,你一定要接下信,他才会走。
无缓冲保证信能到你手上
有缓冲的 就是一个送信人去你家仍到你家的信箱 转身就走 ,除非你的信箱满了 他必须等信箱空下来。
有缓冲的 保证 信能进你家的邮箱
var a string var c = make(chan int,10) func f() { a = "hello,world" c <- 0 } func main() { go f() <-c print(a) }无缓冲
var a string var c = make(chan int) func f() { a = "hello,world" <-c } func main() { go f() c <- 0 print(a) }
-----------------------
设置超时
select {
case v := <-c:
case <-time.After(3 * time.second)
fmt.printlin("超时");
}