【Go】goenvを使ってGo1.13.4の環境構築

Goはじめよう。
rubyにrbenvあるみたいに
goenvっていうのを入れたらバージョン管理が楽になるらしい。

ということで、環境構築はじめましたが一度`go1.11.4`を入れてしまいました。
それから`go version go1.13.4 darwin/amd64`ってターミナルに
表示されるまでにやったことの備忘録。
もしお気づきのことがあれば、コメントいただけると助かります。

#### 本トピックの環境

```
macOS Mojave ver. 10.14.6
Homebrew インストール済
```

#### 参考にしたサイト・記事

- [Go公式](https://golang.org/)
- [goenv installation](https://github.com/syndbg/goenv/blob/master/INSTALL.md)
- [goenvでgoをインストール 〜初心者向け〜](https://qiita.com/yut-kt/items/9f5ac1e788df61f64290)
- [goenvを使ってMacにGo1.12.xの開発環境を構築する(Go1.13以降にも対応）](https://qiita.com/totoro081295/items/65e5facb913289f2910b)


#### 1. go1.11.4 インストール(後ほど削除しました)

[goenv installation](https://github.com/syndbg/goenv/blob/master/INSTALL.md)の手順にある通りgoenvのインストールには2通りあります。
    1. goenvのGitHub
    2. Homebrew
まずここで選択を誤ったのですが、Homebrewが簡単そうだと思って、Homebrewから開始しました。


```
$ brew update
$ brew install goenv
```
完了したらインストールできるバージョンを確認。

```
//インストール可能なバージョンを確認
$ goenv install -l
Available versions:
  1.2.2
  1.3.0
  1.3.1
    ︙
  1.11.3
  1.11.4
```
`go1.11.4`をインストール。

```
$ goenv install 1.11.4
```

そして環境変数の設定。

```
//vimで.bash_profileを開く
$ vi ~/.bash_profile
```
vimが開いたら以下を追記して保存します。

```
export GOPATH="$HOME/go"
export GOENV_ROOT="$HOME/.goenv"
export PATH="$GOENV_ROOT/bin:$PATH"
eval "$(goenv init -)"
export PATH="$PATH:$GOPATH/bin"
```
もちろんターミナル上で以下のコマンドを打つ方法も同じ結果になります。
[goenv installation](https://github.com/syndbg/goenv/blob/master/INSTALL.md)では以下の方法で載っています。
他のコマンドは[goenv installation](https://github.com/syndbg/goenv/blob/master/INSTALL.md)を参照してください。


```
$ echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.bash_profile
```

環境変数設定が完了したら、パスを通す。
そして、今回のインストールを反映させるためのコマンド。

```
//パスを通す
$ source ~/.bash_profile

//globalにgoenv 1.11.4を反映
$ goenv global 1.11.4
$ go version
go version go1.11.4 darwin/amd64
```
無事にインストールできました。

#### 2. go1.13.4にバージョンアップ
[Go公式](https://golang.org/)を閲覧していたら、最新版は`go1.13.4`。(2019年11月9日現在)
最新版にするため、以下の手順でgoenvのアンインストールを行いました。
参照：[goenv installation](https://github.com/syndbg/goenv/blob/master/INSTALL.md)の下部にあるUninstalling goenvとUninstalling go version

```
$ rm -rf `goenv root`
$ brew uninstall goenv
```
上記コマンドの前に一つ手順があります。
環境変数の設定で追加した`goenv init`の一行を削除するというものです。
でも、これは`go1.13.4`でも使用するのでそのままにしておきました。

goenvが削除されたことを`$ brew list`で確認。
そして改めて[goenv installation](https://github.com/syndbg/goenv/blob/master/INSTALL.md)を熟読。
1の手順の最初に大事なこと書いてありました。
> This will get you going with the latest version of goenv and make it easy to fork and contribute any changes back upstream.
(1の手順だったら)最新版のgoenvを使用できるし、フォークや変更の反映もupstreamに簡単にできるよ。(ざっくり訳)

[goenv installation](https://github.com/syndbg/goenv/blob/master/INSTALL.md)のBasic GitHub Checkoutからやり直します。

```
$ git clone https://github.com/syndbg/goenv.git ~/.goenv
```
.goenvにgit cloneされます。

そして再度インストールできるバージョンを確認。

```
//インストール可能なバージョンを確認
$ goenv install -l
Available versions:
  1.2.2
  1.3.0
  1.3.1
    ︙
  1.13.3
  1.13.4
```
今度は`go1.13.4`が表示されていました。
そして`go1.13.4`をインストール。

```
$ goenv install 1.13.4
```

環境変数の設定は、`go1.11.4`インストールの際にすでに完了しているので省略。
再度、今回の変更を反映させるために以下コマンド。

```
$ goenv global 1.13.4
$ go version
go version go1.13.4 darwin/amd64
```
以上です。

私のような初心者が使う分には、`go1.11.4`でも`go1.13.4`でも、どちらも問題なく動いてくれています。
もちろんHomebrewにもgoenvがない状態です。
rbenvをHomebrewでインストールしていたので、きちんと動くのか不安でしたが現状問題ありません。
また何か問題が発生したら追記します。