271_尚硅谷_管道快速入门案例

1.channel管道快速入门案例1.channel管道快速入门案例

2.演示管道的使用_代码2.演示管道的使用_代码

package main

import (
	"fmt"
)

// todo 演示管道的使用
func main() {
	// 1. 创建一个可以存放3个int类型的管道
	var intChan chan int
	intChan = make(chan int, 3)
	// 2. 看看intChan是什么
	fmt.Printf("intChan 的值= %v intChan 本身的地址= %p\n", intChan, &intChan)

	// 3. 向管道写入数据
	intChan <- 10
	intChan <- 20
	intChan <- 30
	// ! 注意点:当我们向管道写入数据时(案例是3个int),不能超过其容量, 但是可以边写入边读取
	// intChan <- 40

	// 4. 看看管道的长度和容量(cap)
	fmt.Println("=============== 4.看看管道的长度和容量(cap) ================")
	fmt.Printf("len(intChan)= %v cap(intChan)= %v\n", len(intChan), cap(intChan))

	// 5. 从管道读取数据
	var num2 int
	num2 = <-intChan // ! 注意点:当我们从管道读取数据时,如果管道中没有数据,就会阻塞等待
	fmt.Println("=============== 5. 读取管道数据 ================")
	fmt.Println("num2=", num2)

	// 6. 取完数据后, 再看管道的长度和容量(cap)
	fmt.Println("=============== 6. 取完数据后, 再看管道的长度和容量(cap) ================")
	fmt.Printf("len(intChan)= %v cap(intChan)= %v\n", len(intChan), cap(intChan))

	// 7. 在没有使用协程的情况下,如果管道数据全部取出,再取就会报错 deadlock
	fmt.Println("=============== 7. 在没有使用协程的情况下,如果管道数据全部取出,再取就会报错 deadlock ================")
	num3 := <-intChan
	num4 := <-intChan
	num5 := <-intChan
	fmt.Println("num3=", num3, "num4=", num4, "num5=", num5)

}

3.演示管道的使用_运行结果3.演示管道的使用_运行结果

posted on 2026-03-04 12:23  与太阳肩并肩  阅读(0)  评论(0)    收藏  举报

导航