TOC
環境建置
安裝並啟動
- 裝 gcc
brew install gcc
brew install mercurial
先用 brew 裝 GO
brew install go
裝 gvm
zsh < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
- 前面可以依照 shell 決定是 zsh bash…
source /Users/toby/.gvm/scripts/gvm
裝 GO
gvm install go1.4 -b
# 用 binary 裝- 似乎是要先裝 go1.4 才可以 upgrade 其他版本
gvm use go1.4
export GOROOT_BOOTSTRAP=$GOROOT
gvm install go1.11.6 -B
gvm use go1.11.6 --default
裝 vim-go
Plugin 'fatih/vim-go'
:GoInstallBinaries
- 相關套件
- 自動補齊
- 秀出原始碼資訊在側邊
- 查找 go doc
vim ~/.vimrc
- 加入
let g:go_fmt_command = "goimports"
起手式
以
work
目錄底下的創建go
目錄為例
檢查環境變數
echo $GOPATH
- 預設為
$HOME/.gvm/pkgsets/go1.11.6/global
- 題外話
- 一般是用這樣的方式暴露函數
export PATH=$PATH:/usr/local/go/bin
設定 GOPATH (直接來)
vim ~/.zshrc
export GOPATH="$HOME/work/go" export GOBIN="$GOPATH/bin" export PATH=="$PATH:$GOBIN"
創建 workspace
mkdir -p $HOME/work/go/{pkg,bin,src}
套件介紹
GVM (Go Version Manager)
跟 nvm 也太像XDD
gvm pkgset
- 可以管理多個
GOPATH
(Go package) - 不過開太多個會佔用到磁碟空間
- 不好用 GG
- 可以管理多個
gvm pkgser list
- 看有哪些 WORKPATH
gvm install <go版號>
- 選擇安裝版本
gvm use <go版本>
- 選擇使用版本 (可加 –default 設為預設)
gvm implode
- 全卸掉…
其他想法
- 是否可以直接 pull docker image 執行
遇到問題
執行
go -v
顯示
failed MSpanList_Insert 0x12c8000 0x3807ad90459d 0x0 fatal error: MSpanList_Insert`
解法
- 需要
export GOROOT_BOOTSTRAP=$GOROOT
- 需要
pkgset
無效?- 直接改
.zshrc
了啦
- 直接改
GOPATH
被gvm
綁架?- 討論
- 每次切換版本,都會改變 GOPATH
- Leave me along
- 解法
- 在
.zshrc
底下加入 export GOPATH="$HOME/go" export GOBIN="$GOPATH/bin" export PATH=="$PATH:$GOBIN"
- 在
- 討論
Golang flag redefined
func init() { if flag.Lookup("foo") == nil { flag.StringVar(&foo, "foo", "", "this is foo") } } func initFlags() { // "foo" does exist: if noone else registered it, then we did foo = flag.Lookup("foo").Value.(flag.Getter).Get().(string) }
cannot find package "github.com/yosssi/gohtml" in any of:
go get -u github.com/yosssi/gohtml
參考連結
- 請 Toby 喝珍奶,你請我就喝 -
YA~大杯還小杯~看你誠意 ❤ ️
使用手機掃描 QRCODE 完成 pay 下去就對