Go/環境構築

出典: フリー教科書『ウィキブックス(Wikibooks)』
< Go
ナビゲーションに移動 検索に移動

環境構築[編集]

Goのプログラミングを学ぶには、なんらかのコンパイル・実行環境が必要です。

オンラインコンパイル実行環境[編集]

Goのコンパイルと実行をウェブブラウザからオンラインで行えるサイトがあります。

  • go.dev/play/  — 公式のオンラインコンパイル実行環境です。ネットワークサービスは禁止され、時計はいつも同じ時刻を返し、乱数も同じ系列を返します。このため実行結果は基本的に同じになります。
    • gotipplay.golang.org  — リリース前の開発版のオンラインコンパイル実行環境です。
  • paiza.io  — 多くのプログラミング言語のオンラインコンパイル実行環境です。

オンラインコンパイル実行環境を使えば、Goのコンパイル環境を構築しにくいスマートフォン・タブレット・ChromebookなどからもGoのプログラミングを学ぶことができます。

← クリックまたはタップしてみてください。
package main

import "fmt"

func main() {
	fmt.Println("Hello, World")
}

Windowsの場合[編集]

Goの公式サイトのダウンロードページからMSIインストーラーをダウンロードし、起動するとインストールを開始できます。

Goは言語仕様で、「ソースコードは UTF-8 でエンコードされた Unicode テキスト」(Source code is Unicode text encoded in UTF-8.)と決められています[1]。 このため Microsoftコードページ932 に構成設定されている日本語Windowsの環境ではエンコーディングの違いによるトラブルに見舞われるケースがある点に注意が必要です。

FreeBSDの場合[編集]

FreeBSD Ports/Packages Collection の、ports/lang/go にあるので、

% sudo make -C /usr/ports/lang/go all install clean

でビルドしインストールできます。 また

% sudo pkg install go-1.18,1

でビルド済みパッケージをインストールできますが、Goのバージョンアップやportsのパッチレベルの更新で go-1.18,1の部分は変わるので、

% pkg search '^go-[1-9]'
go-1.18,1                      Go programming language

の様に、最初に最新のパッケージ名を確認してください。

GNU/Linuxの場合[編集]

GNU/Linuxではディストリビューションによってコマンドは違いますが、ディストリビューションの配布しているGoをそのままインストールできます。

ディストリビューションごとにパッケージマネジャーの仕様や操作方法が異なるので、パッケージマネージャーの検索機能で go- あるいは golang- をキーワードに検索してパッケージの名前を調べてインストールしましょう。

また、これはGoのパッケージに限りませんが、パッケージマネジャーを操作してパッケージアーカイブが更新されていないか定期的に確認し、脆弱性の修正などが施される前のパッケージを使い続けないよう注意しましょう。

ディストリビューションによっては、それでもバージョンが古いこともあるので、最新版が必要な場合は公式ウェブサイトのダウンロードページからダウンロードするのが良いでしょう。

動作確認[編集]

インストール作業が完了したらバージョンの確認を行いましょう。

コマンド
go version

でバージョンを確認できます。

Windowsでの表示結果の例
(Windows PowerShell)
PS C:\Users\myname> go version
go version go1.18.1 windows/amd64
FreeBSDでの表示結果の例
% go version
go version go1.18.1 freebsd/amd64
GNU/Linuxのあるディストリビューションでの表示結果の例
$ go version
go version go1.14.3 linux/amd64
Android で開発バージョンをセルフビルドした例
$ go version
go version devel go1.18-e5f6d8d Mon Oct 4 23:29:20 2021 +0000 android/arm64

Go言語の特徴[編集]

動的ではなく静的
どのような型が使われているかをコンピュータに推測させるのではなく、使用する型を定義する必要があります。
インタプリタ型ではなくコンパイル型
プログラムが実行される前にコンパイルされ、最初から直接機械語に変換されるのです。これは、コードを実行するための余分なステップがないため、いくつかの効率化につながる可能性があります。しかし、コードを動的に変更することができないということになります。
厳密なシーケンシャルではなくコンカレント
Goでは、より簡単に同時処理を書いたり考えたりすることができます。これにより、ウェブやサーバーの開発などでよく見られる問題を、よりシンプルな設計で構築することができます。つまり、より複雑なタスクを、互いに通信することで調整される小さなタスクに分割するのです。さらに、この設計の利点は、これらの小さなタスクを並行して実行することができることです。
メモリーセーフ
Goがメモリの使用を処理して、境界を越えてプログラムがクラッシュするのを防ぐことを意味します。
ガベージコレクション
使われなくなったメモリデータを再利用するために解放し、まだ使われているデータをより効率的に保存できることを意味しています。


脚註[編集]

  1. ^ “Source code representation ¶”. The Go Programming Language Specification. The Go website. (Jul 26, 2021). https://golang.org/ref/spec#Source_code_representation.