====== Go言語 ======
===== 概要 =====
* プログラミング言語の一つ
* Google により開発された
* クロスコンパイル環境を手に入れやすい
* ソースがきっちり定義されている
* 使わない変数などがあると、コンパイル時にエラーとなる
* 個人的な感想
* 変数などの定義が独特な気がする
* 難易度: シェルスクリプト < awk = Perl < Python < Go言語 < C
* デバッグのためにデバッグ用変数やprint文を散りばめたりするやり方が取りづらい (使わない変数があるとコンパイル時にエラーになるため)
===== インストール方法 =====
==== パッケージマネージャでインストールする方法 ====
* とても簡単にインストールする方法
* クロスコンパイルに必要な u.h がなぜかない
* 最新版が手に入りにくい
* インストール\\ $ sudo apt-get install golang
==== gvmでインストールする方法 ====
=== インストール方法 ===
* とても簡単にインストールする方法
* 最新版が手に入りやすい
- 必要なパッケージインストール\\ $ sudo apt-get install curl git mercurial make binutils bison gcc build-essential
- gvm のインストール\\ $ bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
- シェルの設定ファイルの編集(以下を .bashrc や .zshrc などに追記)\\
if [ -s ${HOME}/.gvm/scripts/gvm ]; then
source ${HOME}/.gvm/scripts/gvm
fi
- go 言語のインストール\\
$ gvm install go1.4.2
$ gvm use go1.4.2
$ gvm install go1.5
* go1.5 以降のインストールには go1.4.x が必要
* go1.4.x インストール時にコンパイルエラー ('''unknown relocation type 42; compiled without -fpic?''') になる場合は、環境変数 ('''export CGO_ENABLED=0''') を宣言しておくといいようだ。
* 参考サイト: [[https://github.com/Linuxbrew/legacy-linuxbrew/issues/1057 | go: unknown relocation type 42; compiled without -fpic? · Issue #1057 · Linuxbrew/legacy-linuxbrew]]
- クロスコンパイラ環境の整備\\
$ gvm use go1.4.2
$ gvm cross OS ARCH
* OS には今後クロスコンパイルするであろうOSを入力する (windows, linux, darwin, freebsd, netbsd, openbsd)
* ARCH には今後クロスコンパイルするであろうアーキテクチャを入力する (386, amd64, arm)
* 一度実行しておけば、go1.5 以降の Go 言語に切り替えてもクロスコンパイルができる
=== gvm コマンド ===
* 使用する Go 言語のバージョンの切り替え\\ $ gvm use GO
* GO には go1.4 や go1.5 などのバージョンを入力する
* 詳しくはインストール可能なバージョン一覧を参照
* インストール可能なバージョン一覧\\ $ gvm listall
* インストール済みのバージョン一覧\\ $ gvm list
* デフォルトで使うバージョンの指定\\ $ gvm use GO --default
* GO には go1.4 や go1.5 などのバージョンを入力する
* 詳しくはインストール可能なバージョン一覧を参照
==== パッケージをダウンロードしてインストールする方法 ====
* 何から何まで自分でやる方法
- [[http://golang.org/dl]] からバイナリダウンロード
* 1.5 以降のバージョンは 1.4 がないと動かない
- パッケージ展開\\ $ sudo tar -C /usr/local -xzf go1.4.x.linux-amd64.tar.gz
* go1.4.x.linux-amd64.tar.gz はダウンロードしたファイルに合わせて変更する
- インストール\\
$ cd /usr/local/go/src
$ sudo ./all.bash
- パスの追加 (.bashrc や .zshrc に追記)\\
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
- 【go1.5以降をインストールする場合】 go1.4 を変更\\
$ cd /usr/local
$ sudo mv /usr/local/go /usr/local/go1.4
- 【go1.5以降をインストールする場合】go1.5 のパッケージを展開\\ $ sudo tar -C /usr/local -xzf go1.5.x.linux-amd64.tar.gz
* go1.5.x.linux-amd64.tar.gz はダウンロードしたファイルに合わせて変更する
- 【go1.5以降をインストールする場合】 インストール\\
$ export GOROOT_BOOTSTRAP=/usr/loca/go1.4
$ cd /usr/local/go/src
$ sudo -E ./all.bash
- 【go1.5以降をインストールする場合】 パス追加\\
export GOROOT_BOOTSTRAP=/usr/loca/go1.4
- 【go1.5以降をインストールする場合】 バージョン確認\\ $ go version
* インストールしたバージョンが表示されたら OK
===== 使用方法 =====
* コンパイルせずに実行\\ $ go run SOURCE.go
* コンパイル\\ $ go build SOURCE.go
* .go が取れた実行形式のバイナリが生成される
* クロスコンパイル\\ $ GOOS=OS名 GOARCH=アーキテクチャ go build SOURCE.go
* 使えるOS: windows, linux, darwin, freebsd, netbsd, openbsd
* 使えるアーキテクチャ: 386 (32ビット), amd64 (64ビット), arm (組み込み)
* 例: 64ビットWindowsで実行できるバイナリをコンパイル\\ $ GOOS=windows GOARCH=amd64 go build SOURCE.go
* 実行 (SOURCE.go をコンパイルした場合)\\ $ ./SOURCE
===== Go言語の情報を集めるには =====
* 「Go言語」「golang」でぐぐる
{{tag>プログラミング}}