MST

星途 面试题库

面试题:Go语言中如何使用Goroutine实现简单的并发任务

请编写一个Go程序,使用Goroutine并发执行三个不同的函数,每个函数打印出自己的执行结果,并在所有函数执行完毕后输出“All tasks completed”。说明你使用的同步机制。
47.4万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
    "sync"
)

func task1(wg *sync.WaitGroup) {
    defer wg.Done()
    fmt.Println("Task 1 completed")
}

func task2(wg *sync.WaitGroup) {
    defer wg.Done()
    fmt.Println("Task 2 completed")
}

func task3(wg *sync.WaitGroup) {
    defer wg.Done()
    fmt.Println("Task 3 completed")
}

func main() {
    var wg sync.WaitGroup
    wg.Add(3)

    go task1(&wg)
    go task2(&wg)
    go task3(&wg)

    wg.Wait()
    fmt.Println("All tasks completed")
}

这里使用了sync.WaitGroup作为同步机制。WaitGroup 用于等待一组Goroutine完成。通过wg.Add(n)来设置需要等待的Goroutine数量,在每个Goroutine函数内部使用defer wg.Done()表示该Goroutine完成,主函数中使用wg.Wait()等待所有Goroutine完成后再继续执行后续代码。