好幾年沒寫過代碼了内舟,幾年前的項目好不容易重新跑起來合敦,特別是GOPATH怎么設(shè)置都不生效了,折騰了好久验游,想想還是要做個筆記蛤肌,方便自己方便他人。
安裝Go
通過brew安裝 :
brew install go
批狱;或者去go官網(wǎng)下載裸准,直接安裝安裝完成后查看環(huán)境變量信息:
go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN="/Users/jimmy/go/bin"
GOCACHE="/Users/jimmy/Library/Caches/go-build"
GOENV="/Users/jimmy/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/jimmy/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/jimmy/go"
GOPRIVATE=""
GOPROXY="https://goproxy.io,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/2n/m4yy77cn2xq9894m___tc_p00000gn/T/go-build338189859=/tmp/go-build -gno-record-gcc-switches -fno-common"
配置Go環(huán)境變量
之前設(shè)置GOPATH/GOBIN等環(huán)境變量的方法都失效了,修改bash什么的赔硫,關(guān)閉終端炒俱,重新打開就失效了,
最后發(fā)現(xiàn)只有在終端中通過 go env -w xxx
命令修改才行爪膊,不過也不太需要改什么GOPATH权悟,默認會在user下建立一個go文件夾,自動設(shè)置這個為GOPATH推盛,用這個就挺好峦阁,新版的go有了go module可以自動同步包了,終于跟上其他語言了耘成,國外好像屏蔽了依賴包下載榔昔,所以需要換一個代理驹闰。
開啟go module:go env -w GO111MODULE=on
設(shè)置代理:go env -w GOPROXY=https://goproxy.io,direct
查看效果:go env
GOPATH文件結(jié)構(gòu)
gopath必須包含三個文件夾:
jimmy@JimmydeMacBook-Pro go % ls
bin pkg src
| /Users/jimmy/go GOPATH
|—— bin 生成編譯好的包
|—— pkg 依賴包
|—— src 項目代碼,可以包含多個項目
|———— 項目a
|———— 項目b
安裝設(shè)置GoLand
百度官網(wǎng)安裝即可撒会,激活碼百度
在src文件夾中新建一個項目嘹朗,創(chuàng)建一個.mod文件:go mod init
這個非常重要,要不就無法使用go module了
GoLand Preferences中設(shè)置Go Modules诵肛,勾選enable屹培,GOPROXY=https://goproxy.io,direct
GOROOT/GOPATH我就用默認的,所以其他都不需要設(shè)置什么
編譯項目
我clone了以前的老項目怔檩,直接run褪秀,go module會自動下載所有依賴,等幾分鐘就好了
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"net/http"
"pms/database"
"pms/handler"
"strings"
)
在項目文件夾中執(zhí)行 go install
會在 GOPATH的bin文件夾中生成一個編譯好的和項目文件夾同名的可執(zhí)行文件薛训,這樣就大功告成了~
jimmy@JimmydeMacBook-Pro src % ls
pms
jimmy@JimmydeMacBook-Pro src % cd pms
jimmy@JimmydeMacBook-Pro pms % ls
README.md database go.mod handler test.go
config dbtest.go go.sum main.go utils
jimmy@JimmydeMacBook-Pro pms % go install
jimmy@JimmydeMacBook-Pro pms % cd ..
jimmy@JimmydeMacBook-Pro src % cd ..
jimmy@JimmydeMacBook-Pro go % cd bin
jimmy@JimmydeMacBook-Pro bin % ls
pms
jimmy@JimmydeMacBook-Pro bin % ./pms
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
- using env: export GIN_MODE=release
- using code: gin.SetMode(gin.ReleaseMode)
[GIN-debug] GET /static/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (4 handlers)
[GIN-debug] HEAD /static/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (4 handlers)
如果用
go build
命令會在項目文件夾中編譯生成可執(zhí)行文件媒吗,而不會在bin中~