ホームページ >バックエンド開発 >Golang >GoでGoroutineコルーチンを実装するにはどうすればよいですか?

GoでGoroutineコルーチンを実装するにはどうすればよいですか?

WBOY
WBOYオリジナル
2024-06-01 14:47:56866ブラウズ

Go で実装された Goroutine: 構文: go func() { ... }。実際のケース: フィボナッチ数列を計算するゴルーチンを作成し、バッファなしのチャネルを通じて結果を送信します。

如何在 Go 中实现 Goroutine 协程?

Go で Goroutine コルーチンを実装するにはどうすればよいですか?

Golang の Goroutine は、タスクを同時に実行するために使用できる軽量のコルーチンです。スレッドとは異なり、Goroutine は軽量で Go ランタイムによって管理されるため、手動で作成または管理する必要はありません。

構文

Goroutine を作成する構文は次のとおりです:

go func() {
    // Goroutine 的代码
}()

実際のケース

以下は、Goroutine を使用してフィボナッチ数列を計算する実際のケースです:

package main

func main() {
    c := make(chan int)

    go fibonacci(10, c)

    for i := range c {
        fmt.Println(i)
    }
}

func fibonacci(n int, c chan int) {
    x, y := 0, 1
    for i := 0; i < n; i++ {
        c <- x
        x, y = y, x+y
    }
    close(c)
}

手順

  • make(chan int) は、バッファなしのチャネル c を作成します。 make(chan int) 创建一个无缓冲通道 c
  • go fibonacci(10, c) 启动一个 Goroutine 来计算斐波那契序列并将其发送到通道 c 中。
  • for i := range c 从通道 c 中接收值并打印到标准输出。
  • close(c)
  • go fibonacci(10, c) は、ゴルーチンを開始してフィボナッチ数列を計算し、チャネル c に送信します。
🎜for i := range c は、チャネル c から値を受け取り、それを標準出力に出力します。 🎜🎜close(c) Goroutine の計算が完了した後にチャネルを閉じます。 🎜🎜

以上がGoでGoroutineコルーチンを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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