GO chan

管道

Go語言提倡使用通信的方法代替共享內存

代碼

import "fmt"

func sum(s []int, c chan int) {
	sum := 0
	for _, v := range s {
		sum += v
	}
	//計算得到的數組的值,把值發送到管道
	c <- sum // send sum to c
}

func main() {
	s := []int{7, 2, 8, -9, 4, 0}

	//定義一個整形管道
	c := make(chan int)
	go sum(s[:len(s)/2], c)
	go sum(s[len(s)/2:], c)
	//阻塞從管道接收數據
	x, y := <-c, <-c // receive from c

	fmt.Println(x, y, x+y)
}

帶緩衝的管道
帶緩衝的管道,往裏面放元素不會阻塞

func main() {
	// 創建一個3個元素緩衝大小的整型通道
	ch := make(chan int, 3)
	// 查看當前通道的大小
	// 發送3個整型元素到通道
   //把值往管道里放元素,不會阻塞
	ch <- 1
	ch <- 2
	ch <- 3
	// 查看當前通道的大小
	fmt.Println(len(ch))
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章