不得不说一句,我开始写的部分笔记没有发表,只是保存起来,为什么现在看不到了呢
---------------------------------------------------------------------------
不得不说的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("超时");
}