Goを始めるにあたって有用な情報が書いてあったのでまとめた

全般

記事作成から1年以上経過しています。
内容が古い可能性があります。

Goを始めるにあたって

やっておいた方が良さそうな事をまとめた。

定番的なパッケージをインストール

# 対話式シェルサポート
go get github.com/motmen/gore/cmd/gore
# goreの進化発揮させるためにインストールする
go get github.com/mdempsky/gocode
go get github.com/k0kubun/pp

ghqのインストール

ghqは階層構造でソースコードリポジトリを取得、管理するためのツールをインストール

brew install ghq
# 全てのソースコードリポジトリを`$GOPATH/src`に配置するための設定
git config --global ghq.root $GOPATH/src
# これで見えるようになる
ghq list
# gogetではなくghq getを使ってダウンロード可能

pecoのインストール

リポジトリ間の移動を簡単にする。
ソースコードのリポジトリ管理は一元管理出来るとうになったらが、$GOPATH/src配下の階層が深くなってしまうので移動が面倒。
ここでpecoを使用する。pecoはターミナル上で標準入力をインクリメンタルにフィルタするUIを定常するツール。

brew install peco

fish shellを使ってるので以下を使用。
Fish, ghq, peco導入 – Qiita
Control + Gでリポジトリのフィルタリングが可能となる。

goの開発支援用のツールを探索

Toolsをごっそりgo getする。
...はgoのワイルドカード、指定配下をサブディレクトリを含む全てのパッケージディレクトリにマッチする。

go get golang.org/x/tools/cmd/…

gofmt(コードフォーマッター)

gofmt -w <target source>

goimports ~ コードフォーマッター + imports文補助

Gofmtの上位互換のようなツール。
コードフォーマットとパッケージを読み込むimport文の挿入を削除を自動で行う。

goimports -w <target source>

Goimportsを高速化するためのdragon-importsというツールもある。

lintルール go vetとgolint

コードの静的解析を行って以下のような点を指摘してくれる。

  • コード上でバグが発生しそうな部分
  • スタイルがふぞろいな点
  • Goらしくない書き方

Golintのインストール

go get golang.org/x/lint/golint

Go vetのファイル指定、ディレクトリ指定、階層指定
あまり時間がかからないので常に./...で階層指定でも問題ないかも…

go vet main.go
go vet .
go vet ./…

go vetとgolintを実行する。

go vet ./...; golint ./...
# 実行するとこのように警告が出力される
main.go:1:1: don't use an underscore in package name
main.go:11:5: var projectId should be projectID
main.go:13:6: exported type PubSubMessage should have comment or be unexported
main.go:17:6: exported type PayLoad should have comment or be unexported
main.go:23:1: exported function InstanceSwitcher should have comment or be unexported

※go vetが出力した警告は必ず直す必要がある。

go docの使い方

インストール

go get golang.org/x/tools/cmd/godoc
# fmtパッケージのドキュメントを表示
go doc -all fmt
# 外部パッケージも表示可能
go doc -all github.com/motemen/gore
# ghqとpecoを併用する(fish)
go doc -all (ghq list | peco) | less
# godocを動かす、以下を実施後→にアクセス([The Go Programming Language](http://localhost:6060/))
godoc

  • gorename
    • 変数名や関数名をリネームするツール
  • guru
    • ソースコードの静的解析をするツール
  • gopls
    • 公式のGoのLSP(Language Server Protocol)
  • gocode
    • コード補完用のエンジンを提供するツール
  • godef
    • 定義ジャンプを行うためのツール
  • gotags
    • ctag五感のタグを生成するツール、Goのソースコードの静的解析用のパッケージ群。
      独自の静的解析ツールを作成する際に便利とのこと。
    • 社内のコーディング規約に則るためのlintツールを作るなど
  • analysis

参考

改訂2版 みんなのGo言語:書籍案内|技術評論社

コメント