一般社団法人 全国個人事業主支援協会

COLUMN コラム

Go言語は、その設計から並行処理を強力にサポートしています。特に、ゴルーチンとチャネルはGoの並行処理の中核を成す概念です。この記事では、これらの概念を基礎から紹介し、エンジニアがGoを用いた効率的なプログラミングを行うための入門知識を提供します。

ゴルーチンとは

ゴルーチンは、軽量スレッドのようなもので、Goランタイムが管理する非常に効率的な並行実行ユニットです。ゴルーチンを開始するには、関数呼び出しの前に`go`キーワードを付けるだけです。このシンプルさがGoの強力な特徴の一つです。


package main

import (
"fmt"
"time"
)

func say(s string) {
for i := 0; i < 5; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Println(s)
}
}

func main() {
go say("world")
say("hello")
}

チャネルとは

チャネルは、ゴルーチン間でデータを送受信するための強力な手段です。チャネルを介して、ゴルーチンはデータの交換や同期を行うことができます。チャネルは`chan`キーワードを使用して宣言されます。


package main

import "fmt"

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

go func() { messages <- "ping" }()

msg := <-messages
fmt.Println(msg)
}

このコードでは、匿名ゴルーチンがチャネルを介して文字列”ping”をメインゴルーチンに送信しています。メインゴルーチンは、そのメッセージを受信して表示します。

まとめ

Goのゴルーチンとチャネルは、複雑な並行処理をシンプルに扱うための強力なツールです。これらの基本を理解することで、Go言語での効率的なプログラミングが可能になります。特に、エンジニアがこれらの概念を深く理解し、適切に使用することは、スケーラブルでメンテナンスしやすいアプリケーション開発に不可欠です。

※本記事はChatGPTを用いて生成しています。

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア