GO/GoLand环境搭建及项目编译

好几年没写过代码了,几年前的项目好不容易重新跑起来,特别是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中~

你可能感兴趣的:(GO/GoLand环境搭建及项目编译)