【ごーげんご】

Go言語 とは?

最終更新:
💡 Goで、サーバーや道具をシンプルに組み立てる

Goは、Googleで開発が始まった、静的型付けのプログラミング言語。実行ファイルへのコンパイル、goroutineによる並行処理、標準の開発ツールを備え、サーバーやCLIなどに使う。

📌 このページのポイント
Go:作る・並行して進める・連携するGoのプログラムgoroutineAB仕事を並行して進めるchannel処理の間でデータを渡すgo build実行ファイルを作る共有データやエラーは設計する
線は機能の対応を示します。goroutineを使っても、共有データの扱いが自動で安全になるわけではありません。
ひよこ ひよこ
Goってどんな言語?
ペンギン先生 ペンギン先生
Googleで開発が始まった、シンプルさを重視する言語だよ。変数などの型を実行前に確認し、プログラムをコンパイルして使う。ネットワークを扱うサーバーや、コマンドで動く道具などを作るときに候補になるんだ。
ひよこ ひよこ
作ったプログラムはどう配るの?
ペンギン先生 ペンギン先生
go buildで実行ファイルを作るよ。ソースコードを毎回Goで解釈して動かす形ではないんだ。ただし、対象のOSやCPUに合うビルドが必要で、外部のライブラリやデータファイルを使う場合には、それらの準備も確認しよう。
ひよこ ひよこ
goroutineって何?
ペンギン先生 ペンギン先生
関数の処理を、ほかの処理と並行して進める仕組みだよ。たとえば、ある通信の応答を待つ間に別の仕事を進める。Goの実行環境が複数のgoroutineをOSのスレッドへ割り当てるので、一つずつOSのスレッドを作るのとは違うんだ。
ひよこ ひよこ
並行処理が自動で安全になるの?
ペンギン先生 ペンギン先生
そうではないよ。同じデータを複数の処理が同時に変更すると、競合する場合がある。channelでデータを渡す、共有データを同期するなどの設計が必要だよ。Goには、実行した処理のデータ競合を探す検査機能もあるんだ。
ひよこ ひよこ
エラーはどう扱うの?
ペンギン先生 ペンギン先生
通常のエラーは、関数が返すerrorなどを呼び出し側で確認するよ。tryとcatchで扱う言語とは流儀が違うんだ。panicとrecoverもあるけれど、通常の失敗を何でもpanicにするという意味ではない。使いたい機能やチームの経験も合わせて選ぼう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Go」って出てきたら「サーバーや道具を作る、シンプルさを重視した言語」と思えばだいたいOK!
📖 おまけ:英語の意味
「Go / Golang」 = ゴー
💬 正式な言語名はGo。Golangという呼び名は、以前の公式サイトのドメインgolang.orgから広まったものだよ。

参考資料

← 用語集にもどる