FreeStyleWiki

Goの環境構築

このエントリーをはてなブックマークに追加

[Go]

GO言語を始めてみよう

GOの環境構築

  Windowsでの例、.bashrc on Msys2

  • 昔はWindowsを使っていたのです
export GO_HOME=$HOME/.go
export GOPATH=$HOME/.go
export PATH=$PATH:/c/Go/bin:$GO_HOME/bin:$GOPATH/bin

  Debianでの例、 The Go Programming Language - Getting Started を見て

// 公式サイトから落とす
$ wget https://storage.googleapis.com/golang/go1.7.4.linux-amd64.tar.gz
$ tar -C /usr/local -xzf go1.7.4.linux-amd64.tar.gz
$ cat ~/.bashrc
GOPATH=$HOME/.go
GO_HOME=/usr/local/go
PATH=$PATH:$GO_HOME/bin:$GOPATH/bin

上の場合 sudo chown user:user -R /usr/local/go やっとくといい

$ source ~/.bashrc
$ go version
go version go1.7.4 linux/amd64

// 終わり

// 以下を追記、$GO_HOMEを/usr/local/goにしてしまうとRubyもそうだけど書き込み権限が無くて死ぬんじゃないかなと
$ cat ~/.bashrc
GOPATH=$HOME/.go
GO_HOME=$HOME/.go
PATH=$PATH:$GO_HOME/bin:$GOPATH/bin

$ source ~/.bashrc
$ sudo godeb install

追記しとく

$ cat ~/.bashrc
GOPATH=$HOME/.go
GO_HOME=/usr/local/go
PATH=$PATH:$GO_HOME/bin:$GOPATH/bin
GOBIN=$GOPATH/bin

  言語バージョン管理ツール

asdf

  • 別ページ参照

goenv

慣れてきたら使ってほしい

goenvの操作

  • goenvの更新
$ cd ~/.goenv
$ git pull --rebase
  • goenvでインストール可能なgoのバージョンを一覧化
$ goenv install -l
Available versions:
  1.2.2
  1.3.0
  1.3.1
  1.3.2
  1.3.3
  1.4.0
  1.4.1
  ...
  • インストール
$ goenv install 1.18.0
Downloading go1.18.linux-amd64.tar.gz...
-> https://golang.org/dl/go1.18.linux-amd64.tar.gz
######################################################################################################################################################################################################### 100.0%######################################################################################################################################################################################################### 100.0%
Installing Go Linux 64bit 1.18.0...
Installed Go Linux 64bit 1.18.0 to /home/hiroyuki/.goenv/versions/1.18.0

$ goenv global 1.18.0

$ go version
go version go1.18 linux/amd64

  Emacs

;; PATH
(unless (package-installed-p 'exec-path-from-shell)
  (package-refresh-contents) (package-install 'exec-path-from-shell))

;; bashと変数を共有
(exec-path-from-shell-initialize)

;; Go
(unless (package-installed-p 'go-mode)
  (package-refresh-contents) (package-install 'go-mode))
(add-to-list 'auto-mode-alist '("\\.go$" . go-mode))

  必要なgo パッケージの導入

  • Go用のEmacsパッケージは分けるとよい
    • .emacs.d/go.elを用意する
;; go-mode
(load "~/.emacs.d/go")
    • go.el
(unless (package-installed-p 'flycheck)
  (package-refresh-contents) (package-install 'flycheck))
(unless (package-installed-p 'company-go)
  (package-refresh-contents) (package-install 'company-go))

;; Goのパスを通す
(add-to-list 'exec-path (expand-file-name (concat (getenv "GO_HOME") "/bin")  ))
;; go get で入れたツールのパスを通す
(add-to-list 'exec-path (expand-file-name (concat (getenv "GOPATH") "/bin")))
    • gofmt(コードを整形してくれるパッケージ。デフォルトで導入済み)
    • godef(関数定義などを参照できるパッケージ)
    • gocode(autocompleteやcompanyと連携して補完をしてくれるパッケージ)
    • golint / errcheck (flycheck で自動的にシンタックスエラーを検知)