「Go」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
8行目: 8行目:
 
今日 Go のコンパイラは2つ存在しており、どちらも[[公式リポジトリ]]から[[インストール]]できます:
 
今日 Go のコンパイラは2つ存在しており、どちらも[[公式リポジトリ]]から[[インストール]]できます:
   
* '''gc''': {{pkg|go}} で[[インストール]]できるコンパイ公式セット 8g(x86), 6g(amd64), 5g(arm) の共通名称
+
* '''go''': {{pkg|go}} で[[インストール]]できるコンパイルツールへインターフェース
 
** コンパイルが高速
 
** コンパイルが高速
  +
** 公式のツールが使える(go get, go doc, etc.)
  +
** クロスコンパイル
  +
 
* '''gccgo''': {{pkg|gcc-go}} で[[インストール]]できるコンパイラコレクションに含まれている ''gcc'' のフロントエンド
 
* '''gccgo''': {{pkg|gcc-go}} で[[インストール]]できるコンパイラコレクションに含まれている ''gcc'' のフロントエンド
  +
** goroutine がフルフローになる
** goroutines に制限がある
 
** バイナリのサイズが小さい
+
** バイナリのサイズが小さい(dynamic linking)
** 優れた最適化
 
   
 
=== インストールのテスト ===
 
=== インストールのテスト ===
68行目: 70行目:
 
公式パッケージは Linux の amd64, i386, arm アーキテクチャしかサポートしていません。Darwin, FreeBSD, MS Windows などのクロスコンパイルをサポートするには、以下のコマンドを実行:
 
公式パッケージは Linux の amd64, i386, arm アーキテクチャしかサポートしていません。Darwin, FreeBSD, MS Windows などのクロスコンパイルをサポートするには、以下のコマンドを実行:
   
  +
You can not build {{ic|/usr/lib/go/src}} of itself, ie if you set {{ic|$GOROOT_BOOTSTRAP}} to {{ic|/usr/lib/go}} you will get a warning like this.
$ cd /usr/lib/go/src; for os in darwin freebsd windows; do for arch in amd64 386; do sudo GOOS=$os GOARCH=$arch ./make.bash --no-clean; done; done
 
  +
  +
$ cd /usr/lib/go/src
  +
$ GOROOT_BOOTSTRAP=/usr/lib/go GOOS=darwin GOARCH=amd64 ./make.bash --no-clean
  +
##### Building Go bootstrap tool.
  +
cmd/dist
  +
ERROR: $GOROOT_BOOTSTRAP must not be set to $GOROOT
  +
Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.
  +
  +
To get around this, grab a source copy of Go from https://golang.org/.
  +
  +
{{Note|Commands below will assume you extracted your download of Go to {{ic|~/downloads/go}}.}}
  +
  +
Build your downloaded Go with your system GO.
  +
  +
$ cd ~/downloads/go/src
  +
$ GOROOT_BOOTSTRAP=/usr/lib/go GOOS=linux GOARCH=amd64 ./make.bash --no-clean
  +
  +
You can now build your system Go using the downloaded Go as bootstrap with this command.
  +
  +
$ cd /usr/lib/go/src; for os in darwin freebsd windows; do for arch in amd64 386; do sudo GOROOT_BOOTSTRAP="$HOME/downloads/go" GOOS=$os GOARCH=$arch ./make.bash --no-clean; done; done
   
 
{{Note|上記のコマンドは Go パッケージをアップデートするたびに実行する必要があります。}}
 
{{Note|上記のコマンドは Go パッケージをアップデートするたびに実行する必要があります。}}

2016年11月27日 (日) 18:29時点における版

Go は C 言語に由来する構文を持つ静的型付言語です。ガベージコレクションによるメモリ管理、型安全性、動的型付けの機能、可変長配列やキーバリューマップなどの型、膨大な標準ライブラリなどが追加されています。

インストール

今日 Go のコンパイラは2つ存在しており、どちらも公式リポジトリからインストールできます:

  • go: goインストールできるコンパイルツールへのインターフェース
    • コンパイルが高速
    • 公式のツールが使える(go get, go doc, etc.)
    • クロスコンパイル
  • gccgo: gcc-goインストールできるコンパイラコレクションに含まれている gcc のフロントエンド
    • goroutine がフルフローになる
    • バイナリのサイズが小さい(dynamic linking)

インストールのテスト

Go が正しくインストールされたかは以下のような小さなプログラムをビルドして確認できます:

hello.go
package main

import "fmt"

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

go ツールを使って実行:

$ go run hello.go
Hello, Arch!

標準の gc コンパイラでコンパイル (go build -compiler=gc test.go と同じ):

$ go build test.go

gccgo でコンパイル (go build -compiler=gccgo test.go と同じ):

$ gccgo test.go -o test

$GOPATH

import ステートメントなどで使用される、Go の依存パッケージは、$GOPATH 変数、そして $GOROOT (go のインストールディレクトリ、デフォルトでは /usr/lib/go) で検索されます。基本の $GOROOT からだけでなく、外部の依存パッケージを使う場合は、~/.bash_profile (もしくはそれに類する設定ファイル) にワークスペースを指定する必要があります:

export GOPATH=~/go
ヒント: go env を実行することで Go の変数を確認できます。

ワークスペースを作成:

$ mkdir -p ~/go/{bin,src}

プロジェクトのソースの保存には src ディレクトリが、実行可能ファイルには bin が使われます。

また、bin ディレクトリのパスを $PATH 環境変数に追加することで (Go 言語で書かれた) インストールしたプログラムを (ls などと同じように) どこでも実行できるようになります:

export PATH="$PATH:$GOPATH/bin"

必要な実行可能ファイルが実行できるように $PATHbin ディレクトリも追加します。

詳細は go help gopath を実行してください。

他のプラットフォームのクロスコンパイルを有効にする

公式パッケージは Linux の amd64, i386, arm アーキテクチャしかサポートしていません。Darwin, FreeBSD, MS Windows などのクロスコンパイルをサポートするには、以下のコマンドを実行:

You can not build /usr/lib/go/src of itself, ie if you set $GOROOT_BOOTSTRAP to /usr/lib/go you will get a warning like this.

$ cd /usr/lib/go/src
$ GOROOT_BOOTSTRAP=/usr/lib/go GOOS=darwin GOARCH=amd64 ./make.bash --no-clean 
##### Building Go bootstrap tool.
cmd/dist
ERROR: $GOROOT_BOOTSTRAP must not be set to $GOROOT
Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.

To get around this, grab a source copy of Go from https://golang.org/.

ノート: Commands below will assume you extracted your download of Go to ~/downloads/go.

Build your downloaded Go with your system GO.

$ cd ~/downloads/go/src
$ GOROOT_BOOTSTRAP=/usr/lib/go GOOS=linux GOARCH=amd64 ./make.bash --no-clean

You can now build your system Go using the downloaded Go as bootstrap with this command.

$ cd /usr/lib/go/src; for os in darwin freebsd windows; do for arch in amd64 386; do sudo GOROOT_BOOTSTRAP="$HOME/downloads/go" GOOS=$os GOARCH=$arch ./make.bash --no-clean; done; done
ノート: 上記のコマンドは Go パッケージをアップデートするたびに実行する必要があります。

詳細は FS#30287 を参照。

トラブルシューティング

Jetbrains Goプラグイン

もしJetbrainsのIDEを使用していてGoプラグインがGo SDK のパスを見つけられない場合、互換性のないパッケージを使用している可能性があります。gcc-goパッケージを削除し、goパッケージで置き換えてください。GOPATHが設定されている場合にはIDEは/usr/lib/goでGo SDKを見つけられます。

参照