go module 快速上手

  1. go环境安装
  2. 基础配置
  3. 使用
  4. 关于replace
  5. 关于goland 设置

说明:这篇文章不说为什么,只讲怎么做。

go环境安装

请移步:https://blog.walkbc.com/2019/11/19/installGolang/

基础配置

  1. 升级golang到1.13版本

  2. 设置GO111MODULE=on

     go env -w GO111MODULE=on
    
  3. 设置GOPROXY

     go env -w GOPROXY=https://goproxy.cn,https://mirrors.aliyun.com/goproxy/,https://goproxy.io,https://athens.azurefd.net,direct
    

    说明:欢迎大家补充新的好用的代理;最后的direct不要省略。

使用

  1. 初始化项目

     cd projectName
     go mod init projectName    //在项目目录下执行
    

    这个操作会生成go.mod 和go.sum文件。

    • go.mod会记录当前的go和依赖的包的版本,就像是node的package.json文件,这个文件可以编辑。
    • go.sum会记录依赖包的校验和,这个文件不需要编辑。
  2. 添加依赖包

    1. 使用go get,但是要在包后添加版本号,格式如:

      • go get -u packageName@latest
      • go get packageNam@v1.23.1
    2. 直接在go.mod文件的require段下添加依赖包,如:

      require (
        github.com/golang/protobuf v1.3.2
        golang.org/x/net v0.0.0-20190311183353-d8887717615a
        google.golang.org/grpc v1.23.0
      )
      //或者
      require google.golang.org/grpc v1.23.0

      这种方式并不会下载依赖包,需要执行go mod download或者go mod tidy;执行go build和go run的时候也会下载依赖包。

关于replace

背景:出于某些原因,我们在require中指定的依赖可能无法正常获取,比如:

  1. 原则性的网络问题
  2. 权限问题
  3. 没有发布的本地包
  4. 其他(欢迎补充)

这个时候replace就能派上用场了:

最简单的例子,假设需要使用:golang.org/x/net包,正常情况下是肯定不可能的,此时我们就需要用 replace 进行替代,格式如:

replace golang.org/x/net => github.com/golang/net v0.0.0-20191116160921-f9c825593386

在不确定替换包的版本时,可以指定为:latest。

一些常见的replace可以参考:常用的go module replace设置

关于goland 设置

我发现个goland的小问题:如果不在IDE中设置GOPROXY(即使go env已经设置),那么语法高亮会失效。如图:

goland


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 irvin.em@live.com。

文章标题:go module 快速上手

文章字数:514

本文作者:dino

发布时间:2019-11-18, 14:29:05

最后更新:2019-12-06, 18:12:14

原始链接:https://blog.walkbc.com/2019/11/18/usingGoModule/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

QQ交流群:273078549

目录