LoginSignup
41
47

More than 5 years have passed since last update.

MacでGo開発環境構築

Last updated at Posted at 2016-08-12

概要

MacでGo言語開発を行うための環境構築について、以下を使用することを前提にまとめます。

  • パッケージマネージャー: Homebrew
  • 開発エディター: Vim (+vim-plug)

Goインストール(Homebrew)

$ brew install go
==> Downloading https://homebrew.bintray.com/bottles/go-1.6.3.el_capitan.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring go-1.6.3.el_capitan.bottle.1.tar.gz
==> Caveats
As of go 1.2, a valid GOPATH is required to use the `go get` command:
  https://golang.org/doc/code.html#GOPATH

You may wish to add the GOROOT-based install location to your PATH:
  export PATH=$PATH:/usr/local/opt/go/libexec/bin
==> Summary
🍺  /usr/local/Cellar/go/1.6.3: 5,778 files, 328.4M
% which go
/usr/local/bin/go

GOPATH環境変数

go getコマンドでパッケージをダウンロードするパスを指定します。
GOPATHは好きな場所を設定可能です。

$ export GOPATH=$HOME/.go
$ export PATH=$PATH:$GOPATH/bin
  • bashrc設定
## Go 環境設定
if [ -x "`which go`" ]; then
    export GOPATH=$HOME/.go
    export PATH=$PATH:$GOPATH/bin
fi

このパス指定だが、プロジェクトごとにパッケージをダウンロードする領域を分ける事ができず、全てのプロジェクトのパッケージがこのパスにダウンロードされてしまうという課題があるよう!

Hello World!

ソースコード

hello.go
package main

import "fmt"

func main() {
    sayHello()
}

func sayHello() {
    fmt.Println("Hello World!")
}

実行

  • 実行
$ go run hello.go
Hello World!
  • コンパイル(依存関係含む)して実行ファイルを作成 & 実行
$ go build hello.go
$ ./hello
Hello World!

Vimで入力補完

vim-go

Go開発用vimプラグイン fatih/vim-go をインストールします。

Plug 'fatih/vim-go'

gocode

Goで入力補完を行うためにgocode をインストールします。

Plug 'nsf/gocode', { 'rtp': 'vim', 'do': '~/.vim/plugged/gocode/vim/symlink.sh' }

これでを入力することで補完が行えるようになりました。

もっと便利にするための.vimrc設定

" --------------------------------
" vim-plug
" --------------------------------
call plug#begin('~/.vim/plugged')
  Plug 'junegunn/vim-plug',
        \ {'dir': '~/.vim/plugged/vim-plug/autoload'}
  Plug 'fatih/vim-go'
  Plug 'nsf/gocode', { 'rtp': 'vim', 'do': '~/.vim/plugged/gocode/vim/symlink.sh' }
call plug#end()
:
:
" vim-go設定
au FileType go nmap <leader>r <Plug>(go-run)
au FileType go nmap <leader>b <Plug>(go-build)
au FileType go nmap <leader>t <Plug>(go-test)
au FileType go nmap <leader>c <Plug>(go-coverage)
au FileType go nmap <Leader>i <Plug>(go-info)

au FileType go nmap <Leader>gd <Plug>(go-doc)
au FileType go nmap <Leader>gv <Plug>(go-doc-vertical)
au FileType go nmap <Leader>gb <Plug>(go-doc-browser)

au FileType go :highlight goErr cterm=bold ctermfg=214
au FileType go :match goErr /\<err\>/

let g:go_highlight_functions = 1 
let g:go_highlight_methods = 1 
let g:go_highlight_structs = 1 
let g:go_highlight_operators = 1 
let g:go_highlight_build_constraints = 1 
let g:go_fmt_fail_silently = 1 
let g:go_fmt_autosave = 0 

参考

41
47
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
47