UbuntuにGoをインストール

目次

Go言語をUbuntuで使ってみました。

使用OSは"Ubuntu 20.04.2"です。

Goをインストールする

静的サイトジェネーレーター"Hugo"はGo言語で作られている、ということでGo言語を使ってみようと思い、インストールしてみることにしました。 GCP(Google Cloud Platform)でも使用できるのでWebアプリ開発にも良さそうです。

とりあえず公式サイトに見に行きました。ダウンロードしてインストールするというページにしたがって進めます。

1.ダウンロードする

まずGoをダウンロードします。

$ curl https://golang.org/dl/go1.16.4.linux-amd64.tar.gz -O -L

2.ダウンロードファイルを検証する

ダウンロードページにあるチェックサム(Checksum)でダウンロードしたファイルが壊れていないか確認します。

Goのダウンロードファイルとチェックサム

Goのダウンロードファイルとチェックサム

$ echo "7154e88f5a8047aad4b80ebace58a059e36e7e2e4eb3b383127a28c711b4ff59 go1.16.4.linux-amd64.tar.gz" > sha256.txt
$ sha256sum -c sha256.txt
go1.16.4.linux-amd64.tar.gz: OK

“OK"と表示されたので次の手順へ進みます。

3.ファイルを展開する

ダウンロードした圧縮ファイルを展開します。goディレクトリに展開されるのですがインストールしたバージョンが分かりやすいようにディレクトリ名を"go1.16.4.linux-amd64"に変更します。

$ tar -xzf go1.16.4.linux-amd64.tar.gz
$ mv go/ go1.16.4.linux-amd64/

展開したファイルを/usr/localディレトリに移動します。 またシンボリックリンクを作成することで使用するバージョンの切り替えができるようにします。 別バージョンを使うときにはシンボリックリンクを変更します。

$ sudo mv go1.16.4.linux-amd64 /usr/local
$ sudo rm /usr/local/go
$ sudo ln -s /usr/local/go1.16.4.linux-amd64 /usr/local/go

Goコンパイラのパスをbashの初期化ファイル(~/.bashrc)でPATH環境変数に追加します。 その後、sourceコマンドで実行することで現在実行中の端末に反映させます。

$ echo "PATH=/usr/local/go/bin:$PATH" >> ~/.bashrc
$ source ~/.bashrc

4.インストールされたバージョンを確認する

goでバージョンを確認します。

$ go version
go version go1.16.4 linux/amd64

これでインストールできました。

Goファイルをコンパイルする

hello.goというGoのソースファイルを作成します。始めてGoで作って見ましたがかなり変な作りになってしまいました。文字操作の効率が悪そうですがどうすれば良いのか分かりません。

package main

import "fmt"
import "strconv"

func convertToNumber(arg string) int{
	var result int
	var err error
	result, err = strconv.Atoi(arg)
	if err != nil {
		result = 0
	}
	return result
}

func main() {
	var data[5] string = [5]string {
		"121141141524111112223214332",
		"12111414141213111111121112111412122",
		"4132141412131111111211321412122",
		"1211141414121311111112111112141214",
		"121141414225111322121141332"}
	var buffer string
	for _, str := range data {
		buffer = ""
		for j, c := range str {
			var typeChar string = "🌏"
			if j % 2 != 0 {
				typeChar = " "
			}
			var num = convertToNumber(string(c))
			for k := 0; k < num; k++ {
				buffer += typeChar
			}
		}
		fmt.Println(buffer)
	}
}

ソースファイルから実行ファイルを作り、実行します。

$ go build hello.go
$ ls -l
合計 1916
-rwxrwxr-x 1 izumi izumi 1953823  5月 29 12:43 hello
-rw-rw-r-- 1 izumi izumi     722  5月 29 12:41 hello.go
$ ./hello
🌏  🌏 🌏🌏🌏🌏 🌏    🌏     🌏🌏    🌏 🌏 🌏  🌏🌏  🌏🌏🌏  🌏    🌏🌏🌏   🌏🌏
🌏  🌏 🌏    🌏    🌏    🌏  🌏   🌏 🌏 🌏 🌏  🌏 🌏  🌏 🌏    🌏  🌏  🌏🌏
🌏🌏🌏🌏 🌏🌏🌏  🌏    🌏    🌏  🌏   🌏 🌏 🌏 🌏  🌏 🌏🌏🌏  🌏    🌏  🌏  🌏🌏
🌏  🌏 🌏    🌏    🌏    🌏  🌏   🌏 🌏 🌏 🌏  🌏 🌏 🌏  🌏    🌏  🌏    
🌏  🌏 🌏🌏🌏🌏 🌏🌏🌏🌏 🌏🌏🌏🌏  🌏🌏     🌏 🌏   🌏🌏  🌏  🌏 🌏🌏🌏🌏 🌏🌏🌏   🌏🌏
$
Goのビルドと実行

Goのビルドと実行