【go channel频道】通道充当管道, 我们通过管道将键入的值从一个Go routine发送到另一个Go routine。由于在任何给定时间只有一个Go routine可以访问数据项, 因此可以保证同步。数据的所有权在不同的Go routine之间传递。因此, 通过设计, 它避免了共享内存的陷阱, 并防止了竞争情况。
Go频道示例
package main
import "fmt"
import "time"
func worker(done chan bool) {
fmt.Print("working...")
time.Sleep(time.Second)
fmt.Println("done")
done <
- true
}
func main() {
done := make(chan bool, 1)
go worker(done)
<
-done
}
输出:
working...done