Goの開発環境 Eclipse+GoClipse（Windows）

Goの開発環境を構築したときの手順をまとめておきます。
今回は、以下の環境を利用しています。

* Windows 7 (64bit)
* Go 1.4.2
* Eclipse 4.4 (Eclipse IDE for Java EE Developers)
* GoClipse 0.9.1

Mac OS X の場合は、こちら
[Goの開発環境 Eclipse+GoClipse（Mac OS X）](http://qiita.com/takanorig/items/13607eca4d13c00f084f)

#Goのインストール・設定
以下より、GoのSDKをダウンロードし、インストールします。

http://golang-jp.org/doc/install

ここでは、インストール先のディレクトリは、デフォルトの以下のパスにします。

```
C:\Go
```

#環境変数の設定
Goを利用する上では、以下の環境変数を設定します。

* GOROOT
 * Goのインストールディレクトリです。Goを自分でビルドした場合は設定が不要、など、いろいろとポリシーがあるようですが、ここでは素直にインストールディレクトリを指定します。
* GOPATH
 * ユーザ自身のワーキングディレクトリになります。"go install"したときのパッケージのインストール先になります。"go get"でリモートパッケージを取得する場合も、この配下にパッケージが配置されるようです。

ここでは、環境変数の設定として、以下のパスを指定します。

| 変数名 | 変数値                      |
|:-------|:----------------------------|
| GOROOT | C:\Go                       |
| GOPATH | %USERPROFILE%\.go           |
| PATH   | ;%GOROOT%\bin;%GOPATH%\bin; |

正常にインストールできたか、バージョンを確認します。

```
>go version
go version go1.4.2 windows/amd64
```


#GoGlipse のインストール・設定
前提として、JDK、Eclipse自体は、インストールされているものとします。

##GoGlipseのインストール
以下のUpdateSiteから、最新版をダウンロードしてインストールします（Eclipse Marketplace で公開されているのが、なぜか古いままなので）。

* http://goclipse.github.io/releases/

![goclipse-install.png](https://qiita-image-store.s3.amazonaws.com/0/22893/964095a6-66e1-4daf-4604-ec9841f855de.png)


GoClipseのインストールが完了したら、Eclipseのメニューから"環境設定 -> Go"と進み、以下の設定を行います。

![goclipse-setting.png](https://qiita-image-store.s3.amazonaws.com/0/22893/a6ed7357-c39d-b71a-0b83-0eeeb2cb3d1a.png)

* GOROOT
 * 環境設定で指定した"C:\Go"を指定します。
* GOPATH
 * %USERPROFILE%\.go のパスを指定します（環境変数は使用できないので、実際のパスを指定してください）。

##Goスクリプトの作成・実行

Eclipseのメニューから、"Go Project" を選択して、プロジェクトを作成します。
プロジェクトを作成すると、自動的に以下の階層が作成されます。Go標準のディレクトリ構成になります。

```
<project>
├─bin
├─pkg
└─src
```

src配下に、Goスクリプトを作成します。

```go:src/hello/hello.go
package main

import "fmt"

func main() {
	fmt.Println("Hello world!")
}
```

このスクリプトを実行して、コンソールに"Hello world!"と出力されればOKですね。

![go-helloworld.png](https://qiita-image-store.s3.amazonaws.com/0/22893/82ea32ca-7c58-a2d4-5288-8e9ac584351e.png)

もし、コンパイルエラーにはなっていないのに、実行時に、"go install: no install location for directory"というエラーが発生する場合は、Goスクリプトの配置パスが問題です。
srcディレクトリ直下にGoスクリプトを配置していると、上記のエラーが発生します。

これで、実装自体は可能になります。
gofmtなども適用されるので、自動フォーマットもされます。言語標準で、フォーマッタが備わっているのは便利ですね。

#デバッグ環境の設定
Go単体では、デバッグができません。
ブレイクポイントをしかけても、ストップせずに通過してしまいます。

##GDBのインストール

Goの場合、GDBを利用して、デバッグを行います。この辺りは、ちょっと手間ですね。
Windowsの場合は、MinGWを利用します。

以下のサイトから、64bit用のMinGWをダウンロードします。

http://sourceforge.net/projects/mingw-w64/files/

Toolchains targetting Win64 / Personal Builds / mingw-builds / 4.9.2 / threads-posix / seh
のパスから、最新版をダウンロードしてください。

※32bit用では、正常に動作しないため、異なるモノをダウンロードしないように注意してください。MinGWの公式サイト（http://www.mingw.org/）では、64bit版がないため、SourceForge.net のサイトからダウンロードしています。
※解凍には、7z形式に対応したアーカイバが必要です。7-zipなどを利用してください。

解凍したら、任意のディレクトリに移動してください。
ここでは、 C:\mingw64 に配置することにしまっす。


##Eclipseの設定
GDBの設定は、GoClipseの設定ではなく、C/C++の設定になります。
"環境設定 -> C/C++ -> Debug -> GDB"と進み、GDBの設定を行います。

![go-gdb.png](https://qiita-image-store.s3.amazonaws.com/0/22893/89df056e-b5ee-e0c2-8e9d-10b76472a00d.png)

"GDB debugger"の設定だけが必要になりますが、先ほどMinGWをインストールしたディレクトリ配下にあるGDBのパスを指定します。具体的には、"C:\mingw64\bin\gdb"になります。
これで、Goをデバッグするための環境が整いました。

##デバッグの実行
早速、デバッグをしてみます。

![go-debug.png](https://qiita-image-store.s3.amazonaws.com/0/22893/ef95aacf-5615-282c-7d8c-969eb06fe34d.png)

ブレイクポイントを仕掛けてみると、指定した箇所でストップし、右上の"Variables"タブの部分に、変数の内容が出ていますね！

無事、実装からデバッグを行うGoの開発環境が整いました。