265_尚硅谷_协程快速入门

1.goroutine快速入门案例1.goroutine快速入门案例

2.未开启协程的test()函数调用和main函数中的代码运行2.未开启协程的test()函数调用和main函数中的代码运行

package main

import (
	"fmt"
	"strconv"
	"time"
)

// 3) 要求主线成和goroutine同时执行
// 4) 画出主线程和协程执行流程图

// 1) 在主线程(可以理解成进程)中, 开启一个goroutine, 该协程每隔1秒输出"hello, world"
func test() {
	for i := 1; i < 10; i++ {
		fmt.Println("In test(), Hello, world" + strconv.Itoa(i))
		time.Sleep(time.Second)
	}
}

// 2) 在主线程中也每隔一秒输出"hello,golang", 输出10次后, 退出程序
func main() {

	// todo 直接调用test()函数,需要单独执行
	fmt.Printf("=============== 未开启协程 ===============\n")
	test()
	for i := 1; i < 10; i++ {
		fmt.Println("In main(), hello,golang" + strconv.Itoa(i))
		time.Sleep(time.Second)
	}
}

3.未开启协程的test()函数调用和main函数中的代码运行结果3.未开启协程的test()函数调用和main函数中的代码运行结果

4.对test()函数开启一个协程和main()函数的结果穿插运行_代码4.对test()函数开启一个协程和main()函数的结果穿插运行_代码

package main

import (
	"fmt"
	"strconv"
	"time"
)

// 3) 要求主线成和goroutine同时执行
// 4) 画出主线程和协程执行流程图

// 1) 在主线程(可以理解成进程)中, 开启一个goroutine, 该协程每隔1秒输出"hello, world"
func test() {
	for i := 1; i < 10; i++ {
		fmt.Println("In test(), Hello, world" + strconv.Itoa(i))
		time.Sleep(time.Second)
	}
}

// 2) 在主线程中也每隔一秒输出"hello,golang", 输出10次后, 退出程序
func main() {
	// todo 改: 执行 go test(), 开启一个协程
	fmt.Printf("=============== 开启协程(命令: go func_name()) ===============\n")
	go test()
	for i := 1; i < 10; i++ {
		fmt.Println("In main(), hello,golang" + strconv.Itoa(i))
		time.Sleep(time.Second)
	}
}

5.对test()函数开启一个协程和main()函数的结果穿插运行_运行结果5.对test()函数开启一个协程和main()函数的结果穿插运行_运行结果

6.画出主线程和协程执行流程图

6.画出主线程和协程执行流程图

posted on 2026-03-02 14:28  与太阳肩并肩  阅读(1)  评论(0)    收藏  举报

导航