开发工具IDE

多版本管理

  • goup:https://github.com/owenthereal/goup
  • g(gvm):https://github.com/voidint/g
    1. curl -sSL https://raw.githubusercontent.com/voidint/g/master/install.sh | bash
    2. # 查询版本
    3. g ls-remote stable
    4. # 安装指定版本
    5. g install 1.15.11
    6. # 查询
    7. g ls
    8. # 切换版本
    9. g use 1.14.6

    不同平台编译

    ```bash

    Mac下编译Linux, Windows平台的64位可执行程序:

    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build test.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go

Linux下编译Mac, Windows平台的64位可执行程序:

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build test.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go

Windows下编译Mac, Linux平台的64位可执行程序:

SET CGO_ENABLED=0SET GOOS=darwin3 SET GOARCH=amd64 go build test.go SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build test.go

注:如果编译web等工程项目,直接cd到工程目录下直接执行以上命令 GOOS:目标可执行程序运行操作系统,支持 darwin,freebsd,linux,windows GOARCH:目标可执行程序操作系统构架,包括 386,amd64,arm Golang version 1.5以前版本在首次交叉编译时还需要配置交叉编译环境: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash

  1. <a name="eyjQm"></a>
  2. # <br />
  3. <a name="smhQX"></a>
  4. # 依赖管理dep/glide/gomod
  5. <a name="fdFOj"></a>
  6. ## gomod (+++++)
  7. GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。<br />GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
  8. ```bash
  9. # go 版本1.14.x
  10. go env -w GOBIN=/Users/$USER/go/bin
  11. go env -w GO111MODULE=on
  12. go env -w GOPROXY=https://goproxy.cn,direct // 使用七牛云的
  13. download download modules to local cache(下载依赖包)
  14. edit edit go.mod from tools or scripts(编辑go.mod)
  15. graph print module requirement graph (打印模块依赖图)
  16. verify initialize new module in current directory(在当前目录初始化mod)
  17. tidy add missing and remove unused modules(拉取缺少的模块,移除不用的模块)
  18. vendor make vendored copy of dependencies(将依赖复制到vendor下)
  19. verify verify dependencies have expected content (验证依赖是否正确)
  20. why explain why packages or modules are needed(解释为什么需要依赖)
  21. # 使用
  22. mkdir Gone
  23. cd Gone
  24. go mod init Gone
  25. go.mod 提供了module, require、replace和exclude 四个命令
  26. module 语句指定包的名字(路径)
  27. require 语句指定的依赖项模块
  28. replace 语句可以替换依赖项模块
  29. exclude 语句可以忽略依赖项模块
  30. 由于某些已知的原因,并不是所有的package都能成功下载,比如:golang.org下的包。
  31. modules 可以通过在 go.mod 文件中使用 replace 指令替换成github上对应的库,比如:
  32. replace (
  33. golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a => github.com/golang/crypto v0.0.0-20190313024323-a1f597ede03a
  34. )

dep

  1. 安装
  2. curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
  3. # 查看版本
  4. dep version
  5. # 依赖管理帮助
  6. dep help ensure
  7. # 添加一条依赖
  8. dep ensure -add github.com/bitly/go-simplejson
  9. # 这里 @= 参数指定的是 某个 tag
  10. dep ensure -add github.com/bitly/go-simplejson@=0.4.3
  11. # 添加后一定记住执行 确保 同步
  12. dep ensure
  13. # 建议使用
  14. dep ensure -v
  15. # 删除没有用到的 package
  16. dep prune -v
  17. # 依赖更新
  18. dep ensure -update -v
  19. # 查看依赖状态
  20. dep status
  21. # 初始化:
  22. mkdir $GOPATH/src/test
  23. cd $GOPATH/src/test
  24. dep init
  25. ├── Gopkg.lock:生成的文件,不要手工修改
  26. ├── Gopkg.toml:依赖管理的核心文件,可以生成也可以手动修改
  27. └── vendor:依赖管理目录,这个目录的依赖代码是优先加载的,类似 node node_module 目录

glide

  1. https://glide.sh/

其它

代理goproxy

https://goproxy.cn/

  1. export GO111MODULE=on
  2. export GOPROXY=https://goproxy.cn
  3. export GOROOT=/Users/qizai/.g/go
  4. export PATH=$GOROOT/bin:$PATH