Go Channel学习

channel的简单用法

package main

import (
	"fmt"
	"sync"
)

func main() {
	wg := &sync.WaitGroup{}
	dataChan := make(chan int64)
	// 循环开启协程
	for i := 1; i < 6; i++ {
		wg.Add(1)
		go func(a int64) {
			dataChan <- Add(a)
			wg.Done()
		}(int64(i))
	}
	// 另一个协程来关闭
	go func() {
		wg.Wait()
		close(dataChan)
	}()
	// 读channel
	for x := range dataChan {
		fmt.Println(x)
	}
}

func Add(a int64) int64 {
	return a
}

多协程执行后,用channel收集结果