美文网首页
关于go module

关于go module

作者: nnnnxcj | 来源:发表于2020-04-24 11:40 被阅读0次

    2020.04.29 更新 =======
    关于 goland 使用 go module 的最佳实践,参见https://mp.weixin.qq.com/s/CbCbtu-CX9G_FHb2juMjXA
    新建工程,GoLand -> Preferences -> Go -> Go Modules 勾选“enable go modules intergration”
    在当前工程目录下,go mod init 你的包名,之后:

    1. 直接run工程时,你引用的外部包会自动添加进go.mod
    2. 在工程中想引入自己的库,在go文件中import “你的包名/*****”即可找到

    注意:

    • 被引的方法需要大写开头,否则视为私有,不能被外部访问
    • 使用 go module 能避免一些代码环境迁移出现的问题,推荐使用

    之前内容 =========

    GO111MODULE

    输入go env

    GO111MODULE="on"

    含义:

    • GO111MODULE=off: 不使用 Module-aware mode。
    • GO111MODULE=on: 使用 Module-aware mode,不会去 GOPATH 下面查找依赖包。
    • GO111MODULE=auto或unset: Golang 自己检测是不是使用Module-aware mode。(根据官方描述在不设置GO111MODULE的情况下或者设为auto的时候,如果在当前目录或者父目录中有go.mod文件,那么就使用Module-aware mode, 而go1.12中,如果包位于GOPATH/src下,且GO111MODULE=auto, 即使有go.mod的存在,go仍然使用GOPATH mode)

    GO PROXY

    GOPROXY环境变量是伴随着modules而生,在go1.13中得到了增强,可以设置为逗号分隔的url列表来指定多个代理,其默认值为https://proxy.golang.org,direct。
    direct:表示直接连接,所有direct后面逗号隔开都proxy都不会被使用。
    这里可以设置GOPROXY=https://goproxy.io

    一般默认没有开,开启方式:
    Go版本>=1.13时,使用
    go env -w GO111MODULE=on
    (<1.13版本的方式)编辑下面的文件,export 设置,然后source文件
    vim /etc/profile
    vim ~/.zshrc
    vim ~/.bash_profile (Linux找环境变量的先后顺序)
    注意:在goland里的terminal使用go env 修改不了,会提示冲突,而且如果在preference中勾选里enable gomod,go env出来就是GO111MODULE=on

    使用go module导入自己编写的包

    工程目录结构如下,


    试图在main.go文件中引入modpkg的hello.go的Hello方法和world.go的World结构体

    hello.go world.go
    1. goland设置
      GoLand -> Preferences -> Go -> Go Modules
    1. 在工程目录下打开终端
      go mod init mymod
      路径下生成 go.mod 文件

    2. 在 main.go 中引入

    package main
    
    import (
        "fmt"
        "mymod/modpkg"
    )
    
    func main()  {
        modpkg.Hello()
        aa:=modpkg.World{}
        fmt.Println(aa)
    }
    

    运行结果:

    注意:打开go module go get 到的是最新带版本号的包(所以一直开着就完事儿了)

    参考:https://blanklin030.github.io/2019/12/05/go-mod-hello/

    相关文章

      网友评论

          本文标题:关于go module

          本文链接:https://www.haomeiwen.com/subject/lsmaihtx.html