MacへGoをインストール・A Tour of Goをローカルで起動するまでにつまづいた所

ちょこちょこつまづいたので、どう解決したか順を追って書いておきます。

### HomebrewでGoをインストール

```bash

$ brew install go
```
### インストールされた場所を確認する
```bash

🍺  /usr/local/Cellar/go/1.15: 9,769 files, 494.3MB
```
Homebrewだと/usr/local/Cellar/直下に入っていきます

### versionを確認する
```bash

$ go version
go version go1.15 darwin/amd64
```

### 適当なディリクトリにファイルを作成
```bash

$ mkdir -p ~/go/src/practice
```

### Hello woldしてみる
practiceディリクトリにhello.go を作成する
参考 [Golang公式:Test your installation](https://golang.org/doc/install#testing)



```go:hello.go

package main

import "fmt"

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

### buildしてみる
```bash

hello.go:3:8: cannot find package "fmt" in any of:
	/Users/miztakahashi/go/src/fmt (from $GOROOT)
	($GOPATH not set. For more details see: 'go help gopath')
package hello: cannot find package "runtime" in any of:
	/Users/miztakahashi/go/src/runtime (from $GOROOT)
	($GOPATH not set. For more details see: 'go help gopath')
```
cannot find packageのエラー・・・
$PATH が通っていないのかな？


いろいろ調べました。

### go envで環境変数一覧を確認すると理由がわかるようです。

```bash

Mizukimbp:hello miztakahashi$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/miztakahashi/Library/Caches/go-build"
GOENV="/Users/miztakahashi/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH=""
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/Users/miztakahashi/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/Users/miztakahashi/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
.
.
.
```
通常homebrewでインストールすると、
```
🍺  /usr/local/Cellar/go/1.15: 9,769 files, 494.3MB
```
/usr/local/Cellar/の直下に入るようなので、
以下のpathを正しい場所に書き換えてやる必要がありそうです。


GOPATH=""
GOROOT="/Users/miztakahashi/go"
GOTOOLDIR="/Users/miztakahashi/go/pkg/tool/darwin_amd64"


### /usr/local/Cellar/直下にgoが入るように環境変数を修正していきます。

```bash

$ echo 'export GOPATH=$HOME/go' >> ~/.bash_profile
$ echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bash_profile 
$ echo 'export GOROOT=/usr/local/Cellar/go/1.15/libexec' >> ~/.bash_profile
$ echo 'export GOTOOLDIR=/usr/local/Cellar/go/1.15/libexec/pkg/tool/darwin_amd64' >> ~/.bash_profile

$ source ~/.bash_profile // これをやらないと反映されない
```

### 反映されているか$ go envで確認

```bash

$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/miztakahashi/Library/Caches/go-build"
GOENV="/Users/miztakahashi/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/miztakahashi/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/miztakahashi/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/Cellar/go/1.15/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.15/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"

```
GOPATH
GOROOT
GOTOOLDIR　のパスが、

/usr/local/Cellar/直下にgoが来ている形になってればOK！


### 正しくパスを通せたので、もう一度buildしてみる
```bash

$ cd ~/go/src/practice
$ go build 
``` 
問題なくbuildできました。特に何も結果は返ってきません
正しくbuildできているかファイル(バイナリファイル)を実行してテストしてみます

```bash

$ ./hello
hello, world
```

大丈夫そうです。





## 次はA Tour of Goをローカルで起動させてみる

A Tour of Goはローカルで起動できるらしいのでやってみることにしました。
https://tour.golang.org/welcome/3


```bash

go get golang.org/x/tour
```

### Permission deniedで git cloneできない問題

```bash

# cd .; git clone -- https://go.googlesource.com/tour /Users/miztakahashi/go/src/golang.org/x/tour
fatal: could not create work tree dir '/Users/miztakahashi/go/src/golang.org/x/tour': Permission denied
package golang.org/x/tour: exit status 128
```

どうやらgo get golang.org/x/tourは
git clone https://github.com/golang/tour と同じのようです。(こちらも同じエラーが返ってきました。)

### そもそもsshは通っているか確認
```bash

Mizukimbp:~ miztakahashi$ ssh -T git@github.com
Hi AnnieMizukiTakahashi! You've successfully authenticated, but GitHub does not provide shell access.
```
通っているようでした。


### sudoをつけて実行するとうまくいきました。
```bash

sudo git clone https://github.com/golang/tour
sudo go build
sudo cp tour $GOPATH/bin
tour //これでローカルのブラウザが開きます
```



:laughing: