golang中管道(chan)的一些用法
golang中的管道可以用於各個goroute方法的數據交互,管道有一些方法:
package main
import (
"fmt"
)
func main() {
var (
IntChan = make(chan int, 1000)
//ResultChan = make(chan int, 1000)
)
for i := 0; i < 10; i++ {
IntChan <- i
}
close(IntChan) // 關閉管道,否則下面的for循環會一直循環下去
fmt.Println("循環管道取值前管道內容個數: ", len(IntChan))
for v := range IntChan { // 循環管道: 循環一次即相當於從中取出一個值,管道內的值取空則退出循環
fmt.Println(v)
}
fmt.Println("循環管道取值后管道內容個數: ", len(IntChan))
//IntChan <- 520 管道已經關閉了,無法插入值了
fmt.Println("循環完之后管道中的值: ", <-IntChan)
fmt.Println("循環完之后管道中的值: ", <-IntChan)
}
循環管道取值前管道內容個數: 10
0
1
2
3
4
5
6
7
8
9
循環管道取值后管道內容個數: 0
循環完之后管道中的值: 0
循環完之后管道中的值: 0