====== 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>プログラミング}}