好几年没写过代码了,几年前的项目好不容易重新跑起来,特别是GOPATH怎么设置都不生效了,折腾了好久,想想还是要做个笔记,方便自己方便他人。
安装Go
通过brew安装 :
brew install go
;或者去go官网下载,直接安装安装完成后查看环境变量信息:
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环境变量
之前设置GOPATH/GOBIN等环境变量的方法都失效了,修改bash什么的,关闭终端,重新打开就失效了,
最后发现只有在终端中通过 go env -w xxx
命令修改才行,不过也不太需要改什么GOPATH,默认会在user下建立一个go文件夹,自动设置这个为GOPATH,用这个就挺好,新版的go有了go module可以自动同步包了,终于跟上其他语言了,国外好像屏蔽了依赖包下载,所以需要换一个代理。
开启go module:go env -w GO111MODULE=on
设置代理:go env -w GOPROXY=https://goproxy.io,direct
查看效果:go env
GOPATH文件结构
gopath必须包含三个文件夹:
jimmy@JimmydeMacBook-Pro go % ls
bin pkg src
| /Users/jimmy/go GOPATH
|—— bin 生成编译好的包
|—— pkg 依赖包
|—— src 项目代码,可以包含多个项目
|———— 项目a
|———— 项目b
安装设置GoLand
百度官网安装即可,激活码百度
在src文件夹中新建一个项目,创建一个.mod文件:go mod init
这个非常重要,要不就无法使用go module了
GoLand Preferences中设置Go Modules,勾选enable,GOPROXY=https://goproxy.io,direct
GOROOT/GOPATH我就用默认的,所以其他都不需要设置什么
编译项目
我clone了以前的老项目,直接run,go module会自动下载所有依赖,等几分钟就好了
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"net/http"
"pms/database"
"pms/handler"
"strings"
)
在项目文件夹中执行 go install
会在 GOPATH的bin文件夹中生成一个编译好的和项目文件夹同名的可执行文件,这样就大功告成了~
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
命令会在项目文件夹中编译生成可执行文件,而不会在bin中~