Go言語の並行処理:goroutineとチャネルの基本

2024/08/01
x-logoline-logo
Go入門
1. Go言語とは?初心者向けの基本ガイド
2. Go言語のインストールと初めてのプログラム
3. Go言語の基本構文:変数、データ型、演算子を解説
4. Go言語の制御構文:if文、for文、switch文をマスターしよう
5. Go言語の関数:定義と呼び出し方法を解説
6. Go言語のパッケージとモジュール管理
7. Go言語の構造体とメソッド:データの定義と操作方法
8. Go言語のインタフェース:コードの再利用性を高める方法
9. Go言語の並行処理:goroutineとチャネルの基本
10. Go言語のエラーハンドリング:エラー処理の基本
11. Go言語のファイル操作:ファイルの読み書きをマスターしよう
12. Go言語の標準ライブラリ活用:便利な関数とパッケージ
13. Go言語のHTTPサーバー構築:net/httpパッケージを使った基本
14. Go言語のデータベース操作:GoでのSQL操作入門
15. Go言語のテストとデバッグ:効果的なコード品質管理方法
16. Go言語のプロジェクト構成:ベストプラクティスとディレクトリ構造
17. Go Modules:Go言語の依存管理入門
18. Go言語のCLIツール作成:シンプルなコマンドラインアプリの作成方法
19. Go言語のセキュリティ対策:安全なコードを書くためのガイド
20. Go言語のパフォーマンス最適化:高速なプログラムを書くコツ
21. Go言語のプロジェクトを始めよう:開発環境のセットアップ
22. Go言語のデプロイメント:アプリケーションをサーバーに公開する方法
23. Go言語のAPI開発:RESTful APIの設計と実装
24. Go言語のWebアプリ開発:Ginフレームワークを使った基本
25. Go言語のマイクロサービス:分散システムの基礎
26. Go言語とDocker:コンテナ化されたアプリケーションの開発
27. Go言語とKubernetes:コンテナオーケストレーションの基本
28. Go言語のCI/CD導入:継続的インテグレーションとデリバリーの基礎
29. Go言語のデザインパターン:よく使われるパターンと実装例

Go言語の並行処理:goroutineとチャネルの基本

2024/08/01
x-logoline-logo
PR

Go言語って何?

Go言語(ゴーげんご)は、Googleが開発したプログラミング言語です。シンプルさと効率の良さを兼ね備えているため、特に並行処理を行うのに優れています。ここでは、Go言語の並行処理における重要な概念である「goroutine」と「チャネル」について紹介します。

goroutineって何?

goroutine(ゴルーチン)は、Go言語で並行処理を実現するための軽量のスレッドです。通常のスレッドよりも少ないメモリを使用し、非常に簡単に並行処理を行うことができます。

goroutineの使い方

goroutineを使うには、関数の前に「go」を付けるだけです。これによって、その関数は新しいgoroutineとして実行されます。

package main

import (
    "fmt"
    "time"
)

func sayHello() {
    fmt.Println("こんにちは、Go言語!")
}

func main() {
    go sayHello() // goroutineを開始する
    time.Sleep(1 * time.Second) // goroutineが終了するのを待つ
}

このコードでは、sayHello関数がgoroutineとして実行されます。time.Sleepを使って、メイン関数が終了する前に待機しています。

チャネルの基本

チャネルは、goroutine間でデータをやり取りするための仕組みです。って言うと難しそうだけど、実はとても分かりやすいです。チャネルを使うことで、安全にデータを送受信できます。

チャネルの作り方

チャネルを作成するには、make関数を使います。

ch := make(chan string)

これで、string型のデータを送受信できるチャネルが作成されました。

チャネルの使い方

チャネルを使ってデータを送るためには、<-を使います。以下は簡単な例です。

package main

import (
    "fmt"
)

func greet(ch chan string) {
    ch <- "こんにちは、チャネル!"
}

func main() {
    ch := make(chan string)
    go greet(ch) // goroutineを開始する
    message := <-ch // チャネルからメッセージを受け取る
    fmt.Println(message)
}

この例では、greet関数がチャネルを使ってメッセージを送信し、メイン関数で受け取って表示しています。

まとめ

Go言語の並行処理は、goroutineとチャネルのおかげでとても簡単に扱えます。これらを活用することで、より効率的なプログラムを書けるようになります。

この記事はAIを使用して作成されています。
PR