1.9.1 通道基础
通道是用来传递数据的一个数据结构
Go语言提倡使用通信的方法代替共享内存
当一个资源需要在协程之间共享时,通道在
goroutine之间架起了一个管道,并提供了确保同步交换数据的机制在声明通道时,需要指定将要被共享的数据的类型
可以通过通道共享内置类型、命名类型、结构类型和引用类型的值或指针
Go语言中通道是一种特殊的类型。在任何时候,同时只能有一个
goroutine访问通道进行发送和获取数据多个
goroutine为了争抢数据,势必会造成执行的低效率使用队列的方式是最高效的,通道就是一种队列方式的结构
通道总是遵循先入先出的规则,而保证收发数据的顺序
func Hello(c chan string) { name := <-c // 从通道获取数据 fmt.Println(name) } func main() { // 声明一个字符串类型的变量 ch := make(chan string) // 开启一个goroutine go Hello(ch) // 发送数据到通道ch ch <- "World" // 关闭通道 close(ch) }
Last updated