chicog.me

Macでgoenvを利用したGo言語の開発環境構築

この度仕事で、Go言語を使うことになりそうなので、HelloWorldから再び学ぶことにしました。 私が実際に環境構築をした手順を残していこうかなと思います。 最近はもっぱらJavaScript/PHP/Pythonで開発をすることが多かったので、久々のコンパイル言語でワクワクです。

Go言語とは

Googleが社内の問題を解決するために開発したプログラミング言語です。 PHPや、Pythonと違い静的型付けなコンパイル言語です。(PHPやPythonはインタプリタ言語) インタプリタ言語は実行のタイミングで1行ずつ機械語に変換していくのに対し、コンパイル言語は先に一気に機械語に変換するので 実行中にコードミスによる実行エラーを防げたり、実行速度が早かったりいろいろな恩恵があります。 また、Go言語は他のプログラミング言語と比べると並列処理を書きやすいのだとか・・・! デメリットとしては、例外がないこと、ジェネリクスがないことの2点をよく目にします。

詳しくは下記をご参照ください。 Go言語の初心者が見ると幸せになれる場所 #golang - Qiita

では早速、環境を構築していきましょう!

gitからインストール

brew installだと古いバージョンのGoしかインストールできないので、下記を参考にしgit cloneする形でインストールすることにします。

参考

公式-Installation
Goの学習備忘録 #2 goenvでバージョン管理しようとしたら古いバージョンしか見つかりません - Qiita
goenvのコマンドチートシート - Qiita

# goenv を clone
# cloneする時に「.goenv」となっていることを確認すること!
git clone https://github.com/syndbg/goenv.git ~/.goenv

goenvのPATHを通す

.zshrcgoenvのPATHを通す記述を行う

# .zshrc,.bashrc,いずれか.bash_profileに以下を入力して保存
export GOENV_ROOT="$HOME/.goenv"
export PATH="$GOENV_ROOT/bin:$PATH"
eval "$(goenv init -)"
export PATH="$GOROOT/bin:$PATH"
export PATH="$PATH:$GOPATH/bin"

zshrcを書き換えた後は必ず以下のコマンドを実行する

source ~/.zsrch

goインストール

# インストール可能なバージョンを確認
goenv install -l
Available versions:
  1.2.2
  1.3.0
 # 中略
  1.16.5

goenv install 1.16.5

# 新バージョンをインストールした時に実行
goenv rehash

# 利用するバージョンを指定
goenv global 1.16.5

# バージョン確認
go version
  go version go1.16.5 darwin/arm64

Hello World

では実際にHello Worldしてみましょう! GOPATHモードと、モジュールモードの2つがあるようですが、モジュールモードの方がディレクトリを気にせず実行できるようです。 今回はモジュールモードでHelloWorldしてみます!

モジュールモードで実行

mkdir sample
cd sample

# go.modファイルが作成される
go mod init sample
  go: creating new go.mod: module sample

go.modと同ディレクトリ内にhello.goを作成し、以下の内容を記載する

package main

import "fmt"

func main() {
  fmt.Printf("Hello World\n")
}
go run ./hello.go
  Hello World