GO言語をubuntuにインストール

# 1.ubuntuへGO言語をインストール
- 【メモ】その手の記事は沢山あるけど自分への備忘録として記録
- 【メモ】今更感はあるけど気にしない、ともかくやってみる
- ubuntuのバージョンは18．04
 
```
ouraboros@******:/etc$ cat os-release
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.2 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
```
- 他の方が書いていたブログから`go version`を実行すると「インストされてない、けど以下でインスト可」が表示される

```
ouraboros@broadview:/etc$ go version

Command 'go' not found, but can be installed with:

sudo snap install go         # version 1.12.2, or
sudo apt  install golang-go
sudo apt  install gccgo-go

See 'snap info go' for additional versions.
```
- `snap info go`で情報が見れると書いてあるので実行してみる。バージョンがズラズラと表示され、今ココが表示される。親切

```
ouraboros@broadview:/etc$ snap info go
name:      go
summary:   Go programming language compiler, linker, stdlib
publisher: Michael Hudson-Doyle (mwhudson)
contact:   michael.hudson@ubuntu.com
license:   BSD-3-Clause
description: |
  This snap provides an assembler, compiler, linker, and compiled libraries for the Go programming
  language.
snap-id: Md1HBASHzP4i0bniScAjXGnOII9cEK6e
channels:
  stable:         1.12.2        2019-04-15 (3584) 92MB classic
  candidate:      ↑
  beta:           ↑
  edge:           devel-59ea685 2019-05-04 (3704) 92MB classic
  1.12/stable:    1.12.2        2019-04-15 (3584) 92MB classic
  1.12/candidate: ↑
  1.12/beta:      ↑
  1.12/edge:      ↑
  1.11/stable:    1.11.7        2019-04-15 (3586) 82MB classic
  1.11/candidate: ↑
  1.11/beta:      ↑
  1.11/edge:      ↑
  1.10/stable:    1.10.8        2019-01-24 (3133) 58MB classic
  1.10/candidate: ↑
  1.10/beta:      ↑
  1.10/edge:      ↑
  1.9/stable:     1.9.7         2018-06-13 (2117) 58MB classic
  1.9/candidate:  ↑
  1.9/beta:       ↑
  1.9/edge:       ↑
  1.8/stable:     1.8.7         2018-02-07 (1407) 51MB classic
  1.8/candidate:  ↑
  1.8/beta:       ↑
  1.8/edge:       ↑
  1.7/stable:     1.7.6         2017-06-02  (324) 48MB classic
  1.7/candidate:  ↑
  1.7/beta:       ↑
  1.7/edge:       ↑
  1.6/stable:     1.6.4         2017-05-17  (122) 49MB classic
  1.6/candidate:  ↑
  1.6/beta:       ↑
  1.6/edge:       ↑
```
- 言われた通り`sudo snap install go`を実行するとエラーが表示される。警告内容を理解出来たら`--classic`オプション付けて実行しろと表示される。参照していたブログでもそのオプション付けていたのはそういう理由なのね

```
******@broadview:/etc$ sudo snap install go
[sudo] password for ******:
error: This revision of snap "go" was published using classic confinement and thus may perform
       arbitrary system changes outside of the security sandbox that snaps are usually confined to,
       which may put your system at risk.

       If you understand and want to proceed repeat the command including --classic.
```
- `snap info go`で表示されたバージョン`stable 1.12.2`がインストールされる（ADSLはやっぱ遅い...）

```
******@broadview:/etc$ sudo snap install go --classic
[sudo] password for ******:
Download snap "go" (3584) from channel "stable"                                                  17%  156kB/s 8m11s
↓　※インストールが完了した後に表示された
go 1.12.2 from Michael Hudson-Doyle (mwhudson) installed
```

# 2.インストール結果を確認
- 参照したブログと同じコマンドを実行しインスト結果を確認

```
***@broadview:/etc$ go version
go version go1.12.2 linux/amd64
***@broadview:/etc$ which go
/snap/bin/go
***@broadview:/etc$ ll /snap/bin/go
lrwxrwxrwx 1 root root 13  5月  4 20:49 /snap/bin/go -> /usr/bin/snap*
```
# 3.一先ず動かしてみる
- `go run 'filename'`で実行するとコンパイル？してくれるらしい
- コンパイル、ビルドその昔習った覚えがあるが忘れてしまったので検索したら[ビルドとコンパイルの違い@Qiita by @rico](https://qiita.com/rico/items/9ab8aa110e757a13ef37)に書かれていた。分かりやすい、ありがとうございます。
    - ホームディレクトリにhello.goファイルを作成。中身はこんな感じ（ただのコピー）
        - HBOのドラマ[シリコンバレー](https://www.hbo.com/silicon-valley)でリチャードが「タブだ！」力強く言っていたのでそれに習ってタブを使って書いてみた


```
package main

import "fmt"

func main()	{
		fmt.Println("hi.this is small step,but will be big one for me.")
	}
```
- んでもって`go run hello.go`を実行、以下その結果

```
******@broadview:~/go_playground$ go run hello.go
hi.this is small step,but will be big one for me.
```
- やった、出来た〜