CodeFun Go

通道方向

当使用通道作为函数的参数时,你可以指定这个通道是否为只读或只写。通道的箭头方向指定数据流的方向。

可读可写通道(chan)

func process(ch chan int){ //doSomething }

只写通道(chan<-)

func process(ch chan<- int){ //doSomething }

只读通道(<-chan)

func process(ch <-chan int){ //doSomething }
package main

import "fmt"

func main() {
    ch := make(chan int, 2)
    onlyWrite(ch)
    onlyRead(ch)
	onlyRead(ch)
}

func onlyWrite(ch chan<- int) {
    ch <- 1
	ch <- 2
}

func onlyRead(ch <-chan int) {
    fmt.Println(<-ch)
}
1
2