Go 语言并发编程快速入门 20240814教学笔记及实战代码

Go 语言并发编程快速入门 20240814教学笔记及实战代码

代码Github地址

https://github.com/zhangdapeng520/zdpgo_goroutine

Go语言如何从终端录入数据

go 复制代码
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	// 创建从终端录入数据的对象
	scanner := bufio.NewScanner(os.Stdin)

	// 开始扫描终端输入
	fmt.Println("请输入:")
	scanner.Scan()

	// 获取终端的数据
	text := scanner.Text()

	// 输出数据
	fmt.Println("您输入的是:", text)
}

循环的从终端录入数据

go 复制代码
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	// 创建从终端录入数据的对象
	scanner := bufio.NewScanner(os.Stdin)

	// 开始扫描终端输入
	for scanner.Scan() {
		// 获取终端的数据
		text := scanner.Text()

		// 退出条件
		if text == "exit" {
			break
		}

		// 输出数据
		fmt.Println("您输入的是:", text)
	}
}

管道的创建、关闭和读写

go 复制代码
package main

import "fmt"

func main() {
	// 创建管道
	ch := make(chan string)

	// 关闭管道
	defer close(ch)

	// 开启goroutine
	go func() {
		// 写入
		ch <- "张大鹏"
	}()

	// 读取
	val := <-ch
	fmt.Println("从管道读取到数据:", val)
}

循环录入和读取管道数据

go 复制代码
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	// 创建管道
	ch := make(chan string)

	// 关闭管道
	defer close(ch)

	// 开启goroutine
	go func() {
		// 循环读取
		for v := range ch {
			if v == "exit" {
				break
			}
			fmt.Println(v)
		}
	}()

	// 录入
	scanner := bufio.NewScanner(os.Stdin)
	for scanner.Scan() {
		text := scanner.Text()
		ch <- text
		if text == "exit" {
			break
		}
	}
}
相关推荐
Wild_Pointer.7 小时前
项目实战:编写CMakeLists管理Qt+OpenCV项目
开发语言·c++·qt
莫逸风7 小时前
【java-core-collections】集合框架深度解析
java·开发语言
geovindu7 小时前
go: Bridge Pattern
开发语言·设计模式·golang·软件构建·桥接模式
Fate_I_C8 小时前
Kotlin 为什么是 Android 开发的首选语言
android·开发语言·kotlin
格鸰爱童话8 小时前
python录音转文字
开发语言·python
常利兵8 小时前
Kotlin 助力 Android 启动“大提速”
android·开发语言·kotlin
黎梨梨梨_8 小时前
C++入门基础(上)(namespace和缺省参数)
开发语言·c++
码农阿豪8 小时前
接手一个烂摊子之后:金仓数据库开发规范实战笔记
数据库·笔记·数据库开发
卢锡荣8 小时前
单芯双 C 盲插,一线通显电 ——LDR6020P 盲插 Type‑C 显示器方案深度解析
c语言·开发语言·ios·计算机外设·电脑
legendary_1638 小时前
PD显示器方案新维度:Type-C充电,投屏,显示技术革新
c语言·开发语言·计算机外设