通道充当管道,我们通过管道将键入的值从一个Goroutine发送到另一个Goroutine。由于在任何给定时间只有一个Goroutine可以访问数据项,因此可以保证同步。数据的所有权在不同的Goroutine之间传递。因此,通过设计,它避免了共享内存的陷阱,并防止了竞争情况。
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 }
输出:
链接:https://www.learnfk.comhttps://www.learnfk.com/go/go-channel.html
来源:LearnFk无涯教程网
working...done
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)
Tony Bai · Go语言第一课 -〔Tony Bai〕