并发编程是 Go 语言的一大特色,它让开发者能够轻松地编写高效的并发程序。本教程将带你入门 Go 语言并发编程。

什么是并发?

并发指的是同时执行多个任务的能力。在 Go 语言中,并发主要依靠 goroutines 和 channels 来实现。

Goroutines

Goroutine 是 Go 语言并发编程的核心。它是轻量级的线程,由 Go 运行时管理。

package main

import (
    "fmt"
    "sync"
)

func main() {
    var wg sync.WaitGroup
    wg.Add(1)
    go func() {
        defer wg.Done()
        fmt.Println("Hello from goroutine!")
    }()
    wg.Wait()
}

Channels

Channel 是用于在 goroutines 之间通信的机制。

package main

import (
    "fmt"
    "time"
)

func main() {
    messages := make(chan string)

    go func() {
        for i := 0; i < 10; i++ {
            messages <- "message " + fmt.Sprintf("%d", i)
            time.Sleep(1 * time.Second)
        }
        close(messages)
    }()

    for msg := range messages {
        fmt.Println(msg)
    }
}

WaitGroup

sync.WaitGroup 用于等待多个 goroutines 完成。

package main

import (
    "fmt"
    "sync"
    "time"
)

func main() {
    var wg sync.WaitGroup
    for i := 0; i < 5; i++ {
        wg.Add(1)
        go func(id int) {
            defer wg.Done()
            fmt.Println("Worker", id, "is working")
            time.Sleep(time.Duration(id) * time.Second)
        }(i)
    }
    wg.Wait()
}

本站推荐

更多关于 Go 语言并发编程的教程,请访问我们的 并发编程教程 页面。

总结

Go 语言的并发编程非常简单,通过 goroutines 和 channels,你可以轻松地编写高效的并发程序。希望这个教程能帮助你入门 Go 语言并发编程。