如何可以扩展表并且不会对现有的表结构产生影响

4 min read

以下是一个具有四个 goroutine 的示例,每个都会打印出数字 0 到 9。

package main

import (
    "fmt"
    "sync"
)

func main() {
    var wg sync.WaitGroup
    for i := 0; i < 4; i++ {
        wg.Add(1)
        // 匿名函数
        go func(id int) {
            for j := 0; j < 10; j++ {
                fmt.Printf("Goroutine %d: %d\n", id, j)
            }
            wg.Done()
        }(i)
    }
    wg.Wait()
}

在以上示例中,我们使用了一个 sync.WaitGroup 变量来等待所有 goroutine 完成其工作。我们使用 Add(1) 方法告诉 WaitGroup 有一个新的 goroutine,项目数增加了 1。在每个 goroutine 的结尾,我们使用 Done() 方法告诉 WaitGroup 这个 goroutine 完成了其任务,项目数减少了 1。最后,我们使用 Wait() 方法来阻塞程序,直到所有 goroutine 完成其任务为止。