ちなみに

火曜日の空は僕を押しつぶした。

golang の環境作った

こんばんは。血便がひどくて病院いこうと思って午前休取ったけど眠すぎて睡眠に使った僕です。

はじめに

Golang でコマンドライン Fuzzy Finder 「gof」作った。 - Qiita [キータ]

Fuzzy Finder ユーザーだったので、使ってみたくなって golang の環境を作ってみました。

インストール

HomeBrew で入る。最新は 1.2

$ brew update
$ brew install go

もともと gocd + ls に使っていたので、以下のように変更してどちらでも使えるようにした。これのせいで試そうという気が起きていなかったので、golang をやらない理由がなくなってしまった。A Tour of Go (日本語) とかやるべきな気がする。

-function go() { cd $1; ls }
+function go() {
+  if [ -d $1 ]; then
+    cd $1 && ls
+  else
+    /usr/local/bin/go $@
+  fi
+}

$GOPATH

golang は標準でモダンな感じのパッケージ管理をサポートしている。go get <githubのURL> とかできて格好いい。 これを使うには、パッケージのインストール先を $GOPATH で指定しておく必要がある。 どこにするのが主流なのか分からなかったので、とりあえず ~/.gopath を掘って指定しました。 ついでに $GOPATH/bin$PATH に追加。

$ mkdir ~/.gopath
$ echo 'export GOPATH=~/.gopath' >> ~/.zshenv
$ echo 'export PATH=$GOPATH/bin:$PATH' >> ~/.zshenv

Twitter で聞いてみたら、以下のような回答をいただきました。1.2 しか入れてないので問題ないけど、たしかに今後はバージョンで分けた方がよさそう。

gof のインストール

mattn/gof

Installation 書いてあるように以下のようにしてインストールできる。

$ go get github.com/mattn/gof

最初、Mac だと問題があって以下のようなエラーが出ていた。

$ go get github.com/mattn/gof
# github.com/mattn/gof
.gopath/src/github.com/mattn/gof/tty_unix.go:13: undefined: syscall.TCGETS

Add tty_bsd.go for Mac OS X/FreeBSD by gunyarakun · Pull Request #1 · mattn/gof

どうやら Mac だとコンパイルできていなかったようでした。

$ go get -u github.com/mattn/gof
$ gof --help
Usage of gof:
  -c=false: Cat the file
  -d="": Root directory
  -e=false: Edit selected file
  -l=false: Launcher mode

無事入りました。

まとめ

  • golang をインストールしました。
  • go コマンドを汎用的に使えるようにしました。
  • GOPATH は ~/.go/ のあたりにしておくとよい
  • パッケージのインストールは go get <URL>
  • パッケージのアップデートは go get -u <URL>
  • A Tour of Go をやる。