Go channel-2

2020-07-18  本文已影响0人  来到了没有知识的荒原

缓冲通道

创建容量为5的通道

package main

import "fmt"

func main() {
    ch := make(chan int, 5)
    fmt.Println(len(ch), cap(ch))

    ch <- 100
    ch <- 200
    fmt.Println(len(ch), cap(ch))

    data := <-ch
    fmt.Println("读出data:",data)
    fmt.Println(len(ch), cap(ch))
}

单向通道

双向通道:可读可写
单向通道:只读或只写

ch1:=make(chan int)   //双向
ch2:=make(chan <- int)  // 单向,只写
ch3:=make(<- chan int)  // 单向,只读

一般单项通道都是作为函数形参的类型,起到安全和保护的作用,规定某个函数对channel只读或只写。
创建的时候一般都是双向通道,创建单项通道没什么用

package main

import "fmt"

func main() {
    ch1:=make(chan int)   //双向
    //ch2:=make(chan <- int)  // 单向,只写
    //ch3:=make(<- chan int)  // 单向,只读

    go sendData(ch1)

    data:=<-ch1
    fmt.Println("data:",data)
}

func sendData(ch chan <-int){
    ch<-100
}
上一篇 下一篇

猜你喜欢

热点阅读