ホームページ  >  記事  >  バックエンド開発  >  golang 関数と goroutine がどのように連携するか

golang 関数と goroutine がどのように連携するか

王林
王林オリジナル
2024-04-26 08:18:01502ブラウズ

golang 関数と goroutine がどのように連携するか

Go 言語の関数は Goroutine と連携します

Coroutine (Goroutine) は、Go 言語の軽量な並列実行メカニズムです。機能と連携して、高性能でスケーラブルな同時プログラムを作成できます。

関数

Go 言語の関数は、特定のタスクを実行して結果を返すコード ブロックのコレクションです。関数はパラメータを受け入れ、値または参照で渡すことができます。

func add(a, b int) int {
    return a + b
}

Goroutine

Goroutine は、Go ランタイムによって管理される軽量の実行スレッドです。これは、次のように go キーワードを使用して作成されます。

go func() {
    // Goroutine 正在执行的任务
}

Collaboration

関数とゴルーチンは連携して並行プログラムを作成できます。関数はゴルーチンを開始してタスクを実行でき、ゴルーチンは関数の実行が完了した後に関数をコールバックできます。

実践的なケース

ゴルーチンを開始してフィボナッチ数列を計算する次のコード例を考えてみましょう:

func main() {
    // 启动一个 Goroutine 来计算第 n 个斐波那契数
    n := 5
    fib := make(chan int)
    go func() {
        fib <- fib(n)
    }()

    // 在 main Goroutine 中接收计算结果
    result := <-fib
    fmt.Println("第", n, "个斐波那契数为:", result)
}

func fib(n int) int {
    if n <= 1 {
        return n
    }
    return fib(n-1) + fib(n-2)
}

この場合、 main() この関数は、5 番目のフィボナッチ数を計算するゴルーチンを開始します。 fib() 関数はゴルーチンで実行され、結果は main() 関数のチャネル fib に返されます。 main() この関数はチャネルから結果を受け取り、それを出力します。

この共同アプローチにより、コードの順序と読みやすさを維持しながら、ゴルーチンの同時実行機能を活用できます。

以上がgolang 関数と goroutine がどのように連携するかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。