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
		}
	}
}
相关推荐
冷雨夜中漫步2 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
m0_736919104 小时前
C++代码风格检查工具
开发语言·c++·算法
2501_944934734 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
Gain_chance4 小时前
34-学习笔记尚硅谷数仓搭建-DWS层最近一日汇总表建表语句汇总
数据仓库·hive·笔记·学习·datagrip
黎雁·泠崖5 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
Gain_chance6 小时前
36-学习笔记尚硅谷数仓搭建-DWS层数据装载脚本
大数据·数据仓库·笔记·学习
2301_763472466 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
肖永威6 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos
TechWJ6 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
暗光之痕6 小时前
Unreal5研究笔记 Actor的生命周期函数
笔记·unreal engine