Go言語

目次
Go言語とは
Go(Golang)は、2009年にGoogleによって開発されたオープンソースのプログラミング言語です。シンプルで効率的な構文を持ち、並行処理(Concurrency)を強力にサポートしているため、クラウドサービスやサーバーサイドの開発、システムプログラミングなどに広く利用されています。
Go言語の特徴
Go言語は、以下のような特徴を持っています。
- シンプルで分かりやすい構文: コードが直感的で可読性が高い。
- 高いパフォーマンス: コンパイル型言語であり、C言語並みの速度で動作する。
- 並行処理のサポート: Goroutine を用いた並列処理が容易に実装できる。
- ガベージコレクション: メモリ管理を自動化し、開発者の負担を軽減。
- 静的型付け: コンパイル時に型チェックが行われ、バグを未然に防ぐ。
- クロスプラットフォーム: Windows、Linux、MacOSなど、さまざまな環境で動作可能。
- 標準ライブラリが充実: ネットワーク、ファイル操作、暗号化などの機能が標準で提供される。
Go言語の基本構造
以下に、Go言語の基本的なプログラムの構造を示します。
基本的なGoプログラムの例
package main
import "fmt"
func main() {
fmt.Println("Hello, World!") // 画面に文字列を表示
}
Go言語の基本構文
1. 変数とデータ型
Goでは、変数を宣言する際にデータ型を指定することができます。また、:=
を用いることで型推論も可能です。
データ型の例
データ型 | 意味 | 例 |
---|---|---|
int | 整数型 | var x int = 10 |
float64 | 倍精度浮動小数点数型 | var pi float64 = 3.14 |
string | 文字列型 | var name string = "Taro" |
bool | 真偽値型 | var isActive bool = true |
2. 条件分岐(if文)
Goのif文は、括弧()
を省略し、ブロック{}
を必須とします。
package main
import "fmt"
func main() {
x := 10
if x > 5 {
fmt.Println("xは5より大きい")
} else {
fmt.Println("xは5以下です")
}
}
3. 繰り返し処理(forループ)
Goでは、for
が唯一のループ構文です。
for ループの例
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
fmt.Println("i =", i)
}
}
while ループのような処理
Goには while
ループは存在しませんが、for
を用いて同様の動作を実装できます。
package main
import "fmt"
func main() {
i := 0
for i < 5 {
fmt.Println("i =", i)
i++
}
}
4. 関数
Goでは、func
キーワードを使って関数を定義します。
package main
import "fmt"
func add(a int, b int) int {
return a + b
}
func main() {
result := add(3, 4)
fmt.Println("3 + 4 =", result)
}
5. 並行処理(Goroutine)
Goの最大の特徴の1つがGoroutineを使った並行処理です。
package main
import (
"fmt"
"time"
)
func printMessage() {
for i := 0; i < 5; i++ {
fmt.Println("Hello from Goroutine")
time.Sleep(time.Millisecond * 500)
}
}
func main() {
go printMessage() // Goroutineを開始
time.Sleep(time.Second * 3) // メインスレッドを少し待機
}
Go言語の用途
Goは、以下のような分野で広く利用されています。
- Webサーバー開発: 高速なバックエンドAPIやマイクロサービスを構築。
- クラウドサービス: Kubernetes、Docker などのクラウドインフラツールに使用。
- システムプログラミング: OS、ネットワーク、分散システムの開発。
- データ処理 & 分析: 大規模データの処理を効率的に実装可能。
Go言語のメリット
- シンプルで分かりやすい: 学習コストが低く、可読性が高い。
- コンパイル型で高速: C言語並みのパフォーマンスを発揮。
- 並行処理が簡単: Goroutineとチャネルを活用し、効率的な並行処理が可能。
- 標準ライブラリが充実: ネットワーク通信、暗号化、データ処理などが組み込みで利用可能。
Go言語のデメリット
- ジェネリクスがない(※Go 1.18 以降で対応): C++やJavaのようなジェネリクス機能が長らくなかったが、最近のバージョンで追加された。
- ランタイムのオーバーヘッド: ガベージコレクションにより、リアルタイム性の要求されるシステムには不向きな場合がある。
- エコシステムの成長段階: PythonやJavaに比べると利用可能なライブラリが少ない。
まとめ
Goは、シンプルで高速なプログラミング言語であり、特にクラウドやサーバーサイドの開発に適しています。並行処理の強力なサポートや優れたパフォーマンスにより、今後も注目される言語の一つです。