..

Golang中的chan

Golang 中数据结构管道。

  • 声明
var ch chan int

TIP
每一个管道只能存储一种类型的数据。


  • make()
    1) 无缓冲
ch := make(chan string)

2) 有缓冲

ch := make(chan string, 3)

  • 操作符

<- 表示数据流动的方向。

TIP 默认是双向的,但是可以限定读写。

func f(ch chan int)    // 可读可写
func f(ch <- chan int) // 只能从管道中读取
func f(ch chan <- int) // 只能写数据

len() : 缓冲区中数据的个数。
cap() : 缓冲区的大小。


  • select 的配合

select 可以监控多个管道,其中某个操作触发,则进入指定的case中。

for {
	select {
		case e := <- chA: 
			fmt.Println("From chA")
		case e := <- chB: 
			fmt.Println("From chB")
		default:
			fmt.Println("Default.")
	}
}


记录下管道的基本用法,准备入坑Golang了。