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
}
}
}