在Go语言中,可以使用goroutine和channel来实现按所需顺序执行的函数
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
、``functionB和
functionC。我们使用
sync.WaitGroup`来等待所有goroutine完成,并使用带缓冲的channel来同步它们的执行顺序。
functionA
中,我们打印"Function A",然后将"A"发送到channel。functionB
中,我们等待从channel接收到"A",然后打印"Function B",接着将"B"发送到channel。functionC
中,我们等待从channel接收到"B",然后打印"Function C",接着将"C"发送到channel。运行这个程序,你将看到以下输出:
Function A
Function B
Function C
这表明我们已经成功地按所需顺序执行了这三个函数。
领取专属 10元无门槛券
手把手带您无忧上云