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
		}
	}
}
相关推荐
wjs20243 小时前
状态模式(State Pattern)
开发语言
我命由我123453 小时前
Kotlin 数据容器 - List(List 概述、创建 List、List 核心特性、List 元素访问、List 遍历)
java·开发语言·jvm·windows·java-ee·kotlin·list
liulilittle3 小时前
C++ TAP(基于任务的异步编程模式)
服务器·开发语言·网络·c++·分布式·任务·tap
励志要当大牛的小白菜4 小时前
ART配对软件使用
开发语言·c++·qt·算法
爱装代码的小瓶子6 小时前
数据结构之队列(C语言)
c语言·开发语言·数据结构
Hello.Reader7 小时前
Go-Elasticsearch v9 安装与版本兼容性
elasticsearch·golang·jenkins
_Kayo_7 小时前
VUE2 学习笔记6 vue数据监测原理
vue.js·笔记·学习
五岁小孩7 小时前
实操使用 go pprof 对生产环境进行性能分析(问题定位及代码优化)
性能优化·golang·pprof
Maybe_ch8 小时前
.NET-键控服务依赖注入
开发语言·c#·.net
超浪的晨8 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发