プログラミング言語「Go(Golang)」についての使い方
Go言語とは?
Go言語(Golang)は、Googleによって開発されたオープンソースのプログラミング言語です。
2009年にリリースされ、以下の特徴を持っています。
❶高いパフォーマンス
C言語やC++のようなコンパイル型言語でありながら、簡潔で読みやすいコードを記述できます。
❷簡潔さと効率性
シンプルな構文を採用し、冗長なコードを減らす工夫がされています。
❸並行処理のサポート
軽量スレッドである「goroutine」と、データを安全に共有するための「チャネル」を備えています。
❹標準ライブラリの充実
ネットワーク、ファイル操作、暗号化など、多くの機能を標準ライブラリで提供しています。
❺高いクロスプラットフォーム性
Windows、macOS、Linuxなど、さまざまなプラットフォームで動作します。
Goは、Webサーバーやマイクロサービス、クラウドネイティブアプリケーション、コマンドラインツールなど、幅広い分野で利用されています。
Go言語の使い方
①インストール
Goを使用するには、公式サイトからGoをインストールします。
以下の手順で進めます。
❶Go公式サイトにアクセス。
❷自分のOSに対応するインストーラーをダウンロード。
❸インストール後、goコマンドが使用可能であることを確認します。
go version
上記コマンドを実行して、Goのバージョンが表示されればインストール成功です。
②基本的な構文
Go言語のプログラムは、パッケージ(package)から始まります。
以下は、簡単な「Hello, World」の例です。
package main
import "fmt"
func main() {
fmt.Println("Hello, World")
}
解説
package main
Goプログラムのエントリーポイント(実行可能なパッケージ)を表します。
import "fmt"
標準ライブラリのfmtをインポートして、文字列を出力します。
func main()
Goプログラムの実行が始まる関数です。
③プログラムの実行
❶プログラムをmain.goという名前で保存します。
❷以下のコマンドで実行します。
go run main.go
❸実行結果
Hello, World
Go言語の特徴的な機能とサンプルコード
①変数の宣言
Goでは、静的型付けを採用していますが、型推論もサポートしています。
package main
import "fmt"
func main() {
// 型を明示して変数を宣言
var x int = 10
var y string = "Go言語"
// 型推論を使用
z := 3.14
fmt.Println(x, y, z)
}
②条件分岐
Goの条件分岐は、if文を使用します。
package main
import "fmt"
func main() {
x := 10
if x > 5 {
fmt.Println("xは5より大きい")
} else {
fmt.Println("xは5以下")
}
}
③ループ処理
Goでは、forのみがループ構文として使われます。
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
fmt.Println(i)
}
}
④関数
関数は以下のように定義します。
package main
import "fmt"
// 関数の定義
func add(a int, b int) int {
return a + b
}
func main() {
result := add(3, 5)
fmt.Println("3 + 5 =", result)
}
⑤ goroutine(並行処理)
Goの並行処理の基本であるgoroutineの例です。
package main
import (
"fmt"
"time"
)
func say(message string) {
for i := 0; i < 5; i++ {
fmt.Println(message)
time.Sleep(100 * time.Millisecond)
}
}
func main() {
go say("goroutine")
say("main function")
}
注意点
①エラー処理
Goでは例外処理が存在せず、エラーは値として返されます。
そのため、エラー処理を忘れるとバグが発生しやすくなります。
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open("nonexistent.txt")
if err != nil {
fmt.Println("エラー:", err)
return
}
defer file.Close()
}
②メモリ管理
Goはガベージコレクション(GC)を採用しているため、メモリ管理は比較的簡単です。しかし、GCのパフォーマンスに影響を与える大きなデータ構造の使用には注意が必要です。
③静的型付け
型を明確に記述しなければならない場面があるため、柔軟性は動的型付け言語より低いです。
実践例: Webサーバーの構築
Goの標準ライブラリを使用して簡単なWebサーバーを作成できます。
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, Go Web Server!")
}
func main() {
http.HandleFunc("/", handler)
fmt.Println("サーバー起動中: http://localhost:8080")
http.ListenAndServe(":8080", nil)
}
実行手順
❶上記コードを保存して、go runで実行します。
❷ブラウザでhttp://localhost:8080にアクセスすると、Hello, Go Web Server!と表示されます。
まとめ
Go言語は、シンプルな構文、高性能、並行処理機能により、モダンなアプリケーション開発に最適な言語です。
注意点としては、エラー処理の徹底や大規模データ構造の扱いに気を付ける必要があります。
まずは基本的な構文から学び、Webサーバーの構築や並行処理の活用を試してみると、Go言語の強力さを実感できるでしょう