Windows + Golang ことはじめ

個人的な事情により Golang を触ってみようと思いましたので、その備忘録として残しておきます.
とりあえず、Mac や Linux/Unix ではなく、Windows でやってみようと思います.[^1][^2]

[^1]: みなさん参考記事がシャレオツな Mac ばっかりなんですもん…
[^2]: なんだよ brew って、EZアプリのこと? Binary Runtime Environment for Wireless ?

これから「Windows + Golang」やってみたいなぁ、と思っている方々の一助になれば幸い.

# 何を参考に進めるか
とりあえずこれでいきます。公式強し!
http://golang-jp.org/doc/code.html

# 前提環境
* Golang (go version go1.5.2 windows/amd64) インストール済み (無い場合は[ここから](https://golang.org/dl/)インストールしましょう.
* Go は C:\Go にインストールされている.
以下、C:\Go 以下のディレクトリ構成 (DIR C:\Go の表示結果) です. (色々伏せてますが)

<pre>
 ドライブ C のボリューム ラベルは hogehoge です
 ボリューム シリアル番号は hoge-hoge です

 C:\Go のディレクトリ

 2015/mm/dd  hh:ii    <DIR>          .
 2015/mm/dd  hh:ii    <DIR>          ..
 2015/mm/dd  hh:ii    <DIR>          api
 2015/mm/dd  hh:ii            21,146 AUTHORS
 2015/mm/dd  hh:ii    <DIR>          bin
 2015/mm/dd  hh:ii    <DIR>          blog
 2015/mm/dd  hh:ii             1,107 CONTRIBUTING.md
 2015/mm/dd  hh:ii            28,953 CONTRIBUTORS
 2015/mm/dd  hh:ii    <DIR>          doc
 2015/mm/dd  hh:ii             1,150 favicon.ico
 2015/mm/dd  hh:ii    <DIR>          lib
 2015/mm/dd  hh:ii             1,479 LICENSE
 2015/mm/dd  hh:ii    <DIR>          misc
 2015/mm/dd  hh:ii             1,303 PATENTS
 2015/mm/dd  hh:ii    <DIR>          pkg
 2015/mm/dd  hh:ii             1,519 README.md
 2015/mm/dd  hh:ii                26 robots.txt
 2015/mm/dd  hh:ii    <DIR>          src
 2015/mm/dd  hh:ii    <DIR>          test
 2015/mm/dd  hh:ii                 7 VERSION
                9 個のファイル              56,690 バイト
               11 個のディレクトリ  xxx,xxx,xxx,xxx,xxx バイトの空き領域
</pre>

# Windows の環境変数を変更する

```
GOROOT は C:\Go\
GOPATH は C:\go-workspace
```

とします.
go-workspace に関しては好きな名前で好きな場所に作って頂いて構いません.

# Go で開発するときのフォルダ構成
参考ページの[パッケージパス](http://golang-jp.org/doc/code.html#PackagePaths)にあたります.

> いつの日にか公開することを見越してコードを構成することはよい行いです。

THAT'S RIGHTTTT!

公開しなくたって、ライブラリをインポートする際に他と名前空間が被ってしまうわけにはいかないので、できるだけ公開できるような形で構成していきましょう!

というわけで、ここではひとまず Github の形式を採用します.
まずフォルダを掘ります.
{user_name} のところはお好きにどうぞ.

```
mkdir "%GOPATH%\src\github.com\{user_name}"
```


次に、パッケージフォルダ (パッケージディレクトリ) を作ります.
これはユーザ名の下に来るパッケージ名となります.
これも好きな名前で大丈夫です.

```
mkdir "%GOPATH%\src\github.com\{user_name}\{package_name}"
```

更に今作ったフォルダの中にさっそく Go でプログラムを書いてみます.
ファイル名も何でもいいですが、説明するためにここでは `hello.go` とします.

```hello.go
package main

import "fmt"

func main() {
	fmt.Printf("Hello, world.\n")
}
```

さて、現在のフォルダをまとめるとこんな感じになります.
<pre>
C:\
　└─go-workspace
　　　　├─bin
　　　　├─pkg
　　　　└─src
　　　　　　└─github.com
　　　　　　　　└─{user_name}
　　　　　　　　　　└─{package_name}
　　　　　　　　　　　　└─hello.go
</pre>

それでは、実際に hello.go をコンパイルしてみましょう.

```
cd %GOPATH%\src
go install github.com\{user_name}\{package_name}
```

または

```
cd %GOPATH%\src\github.com\{user_name}\{package_name}
go install
```

そうすると、コマンドプロンプトには何も表示されずに終了します.
何も表示されないので不安かもしれませんが、これが成功の合図です.
ここで何か出力されてしまった場合はエラーですので、グーグル先生に相談してみましょう.

ちなみに私は
> go install: no install location for .go files listed on command line (GOBIN not set)

と出てきて焦ったのですが、go install コマンドに go ファイルのファイルパスを渡してしまい、怒られてしまったのでした….
`go install github.com\t_shirone\test\hogehoge.go` みたいな.
正しくは `go install github.com\t_shirone\test` で、Go のファイル名は含めません.
go install のしていることを考えれば当たり前なのですが(笑

さて、go install が終わると `C:\go-workspace\bin` にはパッケージ名で実行ファイルが作られています.

```
%GOPATH%\bin\{package_name}.exe
```

これで、先程 go install したものを実行できるはずです.
一旦ここまで.

それでは良きエンジニアライフを(^w^)ﾉｼ