Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

MX Linux 18にGo開発環境を構築

LinuxにGo開発環境を作ろう!

MX Linux 18にGo開発環境を作ってみる。
別にMX Linux 18にこだわらなくても、他のDebian系ならば同じことが出来るはず。
違いは、Goのコンパイル済みファイルをダウンロードする時に、自分のOS用のやつを間違えないようにダウンロードすること。

Go言語ダウンロード

本家サイトからダウンロードする。
やりかたは、本家のDocumentを参照。
Getting Started - The Go Programming Language

ダウンロードする時は、自分が利用するOSに注意すること。
今回はLinuxなので「go1.14.2.linux-amd64.tar.gz」をダウンロードする。
Raspbian用なら「go1.14.2.linux-arm64.tar.gz」か「go1.14.2.linux-armv6l.tar.gz」ですね。

ダウンロードファイルの展開とPATHの設定

linuxディレクトリ慣習にならい、optディレクトリに解凍してみる。
/optではなく、$HOME配下にoptディレクトリを作った。

Go言語のバージョンにより環境を切り替えたいので、環境毎にフォルダを作る。
下記の例では、バージョン1.13.6と1.14.2を切り替えられるようにしている。

/home/kamuycikap/opt
├── 1.13.6       <- バージョン1.13.6の解凍先
├── 1.14.2       <- バージョン1.14.2の解凍先
└── gopath     <- ソースコードなどが収められるディレクトリ
     ├── bin
     ├── pkg
     └── src
         ├── github.com
         ├── golang.org
         ├── honnef.co
         ├── mvdan.cc
         └── workspace -> /home/kamuycikap/drp_prg/go       <- 新規作成する自分ソース管理用のトップディレクトリ
        ※別ディレクトリのソフトリンクにしている。

下記の設定を、$HOMEの .bashrc に設定。

## Go言語設定関連
export GOPATH=/home/kamuycikap/opt/go/gopath   # Go言語開発用のトップディレクトリ
export GOROOT=~/opt/go/1.14.2                                 # Go言語本体のディレクトリ(zipファイル解凍先)
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin       # シェルでコマンド叩けるように、それぞれのbinディレクトリを登録

便利なGoパッケージの導入

Go言語は、言語対応の様々なパッケージ(Go言語拡張機能)をインターネット上に公開しており、Go言語用コマンド(以下、便宜上Goコマンド)で自分の好きなパッケージを導入できる。
導入したパッケージは、GOPATH配下のディレクトリで全て管理される。

以下、あると便利なGo言語用パッケージ導入コマンド

$ go get github.com/motemen/gore/cmd/gore     # Go言語用REPL
$ go get golang.org/x/tools/gopls                          # Go言語用LSPサーバー
$ go get golang.org/x/tools/cmd/goimports          # 自動的に不必要なimportを調整してくれる
$ go get -u github.com/k0kubun/pp                       # Go言語用REPLの色つけ
$ go get golang.org/x/tools/cmd/godoc                 # Go言語用REPL上の単語補完
2020/04/28 追記

VSCodeやらEmacsやらで開発環境を整えていると、結局、こんな感じになりました。
インストールコマンドの go get .... の部分は割愛します。

.
├── dlv
├── fillstruct
├── go-outline
├── go-symbols
├── gocode
├── godef
├── godoc
├── godoctor
├── goimports
├── gomodifytags
├── gopkgs
├── goplay
├── gopls
├── gore
├── gorename
├── gotests
├── guru
└── impl

ソースコード作成

上記ディレクトリツリーのgopath配下に新規フォルダを作ってソースコードを作成

$ cd /home/kamuycikap/opt/go/gopath/src/workspace
$ mkdir ./firstpkg
$ cd ./firstpkg
$ nano ./firstpkg.go
package main

import "fmt"

func main() {
	fmt.Printf("hello, world\n")
}

実行してみる

コンパイルの前に実行して確かめてみる。

$ go run firstpkg.go
Hello World
$ 

コンパイルテスト

下記コマンドでコンパイル

$ go build firstpkg.go

実行

$ ./firstpkg
Hello World
$ 

ドキュメント確認テスト

標準でついてくるコマンド「go doc」か、追加でパッケージインストールする「godoc」を利用すると、ソースコードに記述されているコメントをあんじょう宜しく引用して、画面に表示してくれる。
「go doc」はコマンドラインに情報を表示し、「godoc」はWebブラウザに表示してくれる。
言語レベルでDoxygenのような機能を有しているのはすばらしい。

ここでは、ブラウザで表示してくれる「godoc」を紹介。

$ cd /home/kamuycikap/opt/go/gopath/src/workspace/firstpkg
$ godoc -http=localhost:8080
using GOPATH mode

この状態で、ブラウザを起動し、URL欄に「http://localhost:8080」と入力。
すると、Go本家のようなWebページが起動する。
続けてURL欄を「http://localhost:8080/pkg/workspace/firstpkg」に修正すると、firstpkg.goの内容がブラウザに表示される。

これが正しいかどうかわからないが・・・今回の構築環境ではソフトリンクとしてsrcディレクトリ下にworkspaceを配置している。
よって、「http://localhost:8080/pkg/workspace/firstpkg」と修正しなければならないような気がする。
ちなみに、「http://localhost:8080/pkg/workspace/」とすると、workspace配下に作成したパッケージが一覧で表示される。
http://localhost:8080/pkg/」とすると、GOPATH直下のsrcディレクトリに配置されている、全パッケージの一覧が表示される。