【Go!】Golang環境構築~Mac(M1チップ)で~【Go!】


はじめに

Mac(M1チップ)環境でGolangの環境構築していきます。
goenvでの構築のやり方で進めていきます。
色々試行錯誤しましたが、goenvで導入した場合、最新版の1つ下のバージョンまでしかインストールできませんでした。
VScodeをいじってるときに最新版じゃないよってアップデート急かされるので、結局公式HPで最新版インストールすることにしました。
まぁもしgoenvに変えたいときでもやり方はわかったので。goenvの導入方法も記しておきます。

goenv??????

goのバージョン管理を行うためのツールです。
プロジェクト毎に、goのバージョン指定できます。
(ぼくはバージョン違う場合はDockerで仮想環境作っちゃうかも。。。)
Pythonでいうpyenv、Rubyでいうrbenv。。。

環境構築

公式からGolangインストール

ここのリンクからインストール
下の方にarm版があるのでこれをインストールする。
arm版でないとVScodeでデバッグできないので必ずarm版で!

PATHを指定する必要なし。
下のVScodeで実践!の項目まで飛ばしてください!

goenv導入

goenvで導入してみたがgoenvでインストールできる

インストール

homebrewでもできるけどバージョンが低いのでこっちでインストール。

$ git clone https://github.com/syndbg/goenv.git ~/.goenv

PATHを通す

まだbash使ってる方は~/.zshenvの部分を~/.bash_profileにしてもらえば^^;

$ echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.zshrc
$ echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(goenv init -)"' >> ~/.zshrc
$ source ~/.zshrc

バージョン確認

表示されればOKです!

$ goenv -v

goの設定

インストール

インストールできるバージョンの一覧を表示

$ goenv install -l
$ goenv install バージョン

使用するバージョンの設定

$ goenv global バージョン

特定のディレクトリ内だけのバージョン設定

$ goenv local 1.16.0

バージョン確認

これで指定したバージョンが表示されればOK!

$ go version

PATHを通す

bashの方は~/.bash_profileに。

$ echo 'export PATH="$GOROOT/bin/$PATH"' >> ~/.zshrc
$ echo 'export PATH="$PATH:$GOPATH/bin"' >> ~/.zshrc
$ source ~/.zshrc

VScodeで実践!

環境構築

今回はテストフォルダを作ってその中で作業を進めていきます。

# 任意のディレクトリで
$ mkdir test
$ cd test
$ touch main.go
$ code .

で、VScodeが開かれます。

goの拡張機能インストール

shift + command + pgo: install/update tools入力


左上のチェックで全チェックでOKボタン。
全部SUCCESSEDしたらで完了。

goファイル修正

main.go
package main

import "fmt"

func main() {
    msg := "hello world"
    fmt.Println(msg)
}

起動確認

$ go run main.go

mod作成

作業ディレクトリ内でgo.modを作成します。
go mod init フォルダ名(プロジェクト名)
今回はtestなのでコレ

$ go mod init test

go.modというファイルが生成されました。

ブレークポイント

main.goにブレークポイントを置きます。

デバッグ



これでmsgの中身が見れたりして今どういう状態か把握することができます。
使い方は色々いじってみてください!

まとめ

とりあえずGo入れてみたわけですが、色々基礎的なサイトとか覗いてみました。
これ!Cだ!!!
PrintfPrintln懐かしい!!!でも末尾にセミコロンはいらないみたいだ。
元々SE時代にC#やってたぼくにはもしかするとrubyよりGoの方が合っているのでは!?
rubyやってて動的型付けで解せぬ部分もあったしな〜。
静的型付け言語万歳!!!

変数のところ指すと型わかるっぽい。
C言語が元になってるならシステム系でも使えんのかな?
てかこれMac必要なくなるのでは?