首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

go例程,按所需顺序执行的函数

在Go语言中,可以使用goroutine和channel来实现按所需顺序执行的函数

代码语言:javascript
复制
package main

import (
	"fmt"
	"sync"
)

func functionA(wg *sync.WaitGroup, ch chan string) {
	defer wg.Done()
	fmt.Println("Function A")
	ch <- "A"
}

func functionB(wg *sync.WaitGroup, ch chan string) {
	defer wg.Done()
	<-ch
	fmt.Println("Function B")
	ch <- "B"
}

func functionC(wg *sync.WaitGroup, ch chan string) {
	defer wg.Done()
	<-ch
	fmt.Println("Function C")
	ch <- "C"
}

func main() {
	var wg sync.WaitGroup
	ch := make(chan string, 3)

	wg.Add(3)
	go functionA(&wg, ch)
	go functionB(&wg, ch)
	go functionC(&wg, ch)

	wg.Wait()
	close(ch)
}

在这个示例中,我们定义了三个函数:functionA、``functionBfunctionC。我们使用sync.WaitGroup`来等待所有goroutine完成,并使用带缓冲的channel来同步它们的执行顺序。

  1. 首先,我们启动三个goroutine,分别执行这三个函数。
  2. functionA中,我们打印"Function A",然后将"A"发送到channel。
  3. functionB中,我们等待从channel接收到"A",然后打印"Function B",接着将"B"发送到channel。
  4. functionC中,我们等待从channel接收到"B",然后打印"Function C",接着将"C"发送到channel。
  5. 最后,我们等待所有goroutine完成,并关闭channel。

运行这个程序,你将看到以下输出:

代码语言:javascript
复制
Function A
Function B
Function C

这表明我们已经成功地按所需顺序执行了这三个函数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券