1.9.1 通道基础

  1. 通道是用来传递数据的一个数据结构

  2. Go语言提倡使用通信的方法代替共享内存

  3. 当一个资源需要在协程之间共享时,通道在goroutine之间架起了一个管道,并提供了确保同步交换数据的机制

  4. 在声明通道时,需要指定将要被共享的数据的类型

  5. 可以通过通道共享内置类型、命名类型、结构类型和引用类型的值或指针

  6. Go语言中通道是一种特殊的类型。在任何时候,同时只能有一个goroutine访问通道进行发送和获取数据

  7. 多个goroutine为了争抢数据,势必会造成执行的低效率

  8. 使用队列的方式是最高效的,通道就是一种队列方式的结构

  9. 通道总是遵循先入先出的规则,而保证收发数据的顺序

    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