Golang中Modle包的使用

作者: 陌无崖 | 来源:发表于2019-08-10 13:54 被阅读1次

    导语

    我们都知道在Golang中我们一般都是设置GOPATH目录,这个目录主要存放我们的第三方包,这个方式一直不是很方便,今天给大家介绍Go 1.11版本中推出的GoModul使用方法,学过java的同学,可能对maven包有所了解,Model的包管理类似于这种方式。

    使用之前的准备

    在安装Go版本后,这个功能默认是关闭的,需要我们手动设置环境变量进行开启,设置方式如下

    //go命令行将不会支持module功能
    O111MODULE=off
    //go命令行会使用modules,而一点也不会去GOPATH目录下查找。
    GO111MODULE=on
    //自动进行
    GO111MODULE=auto
    

    开始使用

    为了更加直观的看到model使用之后的好处,建议在GOPATH目录之外进行创建一个目录进行练习,首先我们创建如下目录结构:


    image

    main.go

    package main
    
    import (
        log "github.com/sirupsen/logrus"
    )
    
    func main() {
        log.WithFields(log.Fields{
            "animal": "walrus",
        }).Info("A walrus appears")
    }
    

    接着我们用go mod命令初始化我们的目录

    go mod init main
    

    运行成功后我们会看到在我们的目录结构中出现了go.mod的文件

    module main
    
    go 1.12
    

    现在我们开始直接运行我们的代码执行命令

    go run ./main
    

    在控制台会出现如下输出,这些输出便是将需要的包进行版本下载同时显示了我们的程序代码的输出

    image
    并且在我们的目录结构中同时又添加了一个文件go.sum如下图所示存放着我们包的具体信息
    image

    发布版本引用自己封装的包

    有时候我们自己写了一个包,包中提供了一些公用的方法,应该如何利用model进行管理呢
    首先我们创建如下目录


    image

    add.go

    package common
    
    func Add(a, b int64) int64 {
        return a + b
    }
    

    现在我们开始初始化mod在我们的主目录使用如下方式

    go mod init github.com/yuwe1/modpratice
    

    然后使用git初始化我们的仓库

    git init
    git remote add origin git@github.com:yuwe1/modpratice.git
    git add demo2/ go.mod
    git commit -am "add Add func"
    git push --tags
    git push -u origin master
    

    仓库显示如下:


    image

    现在让我们创建另一个目录


    image
    main.go
    package main
    
    import (
        "fmt"
    
        "github.com/yuwe1/modpratice/demo2/common"
    )
    
    func main() {
        fmt.Println(common.Add(1, 2))
    }
    
    

    使用如下命令

    go mod init main
    go run ./main
    

    显示结果如下:【成功显示出了我们最终的结果。】


    image

    修改版本

    在上面的使用中我们成功的引用了自己的代码,但是如果我们仓库的代码进行了升级,我们进行了修改之后,又该如何引用最新的代码呢
    比如修改Add函数

    package common
    
    import (
        "fmt"
    )
    
    func Add(a, b int64) int64 {
        fmt.Println("修改了Add函数")
        return a + b
    }
    

    此时我们只需要添加一个新的版本就行了
    命令如下

    git add ../demo2/common/add.go
    git commit -m "fix Add and add hello"
    git tag v1.0.1
    git push --tags origin master
    

    最终我们看到了仓库多了一个版本


    image

    现在我们使用最新的版本,直接go get 命令如下

    go get github.com/yuwe1/modpratice@v1.0.1
    

    我们首先看一下go.sum里的文件,可以看到多了一个版本


    image

    现在我们重新运行,会发现输出的结果已经发生了改变。

    Go Model的其它命令

    go mod tidy //拉取缺少的模块,移除不用的模块。
    go mod download //下载依赖包
    go mod graph //打印模块依赖图
    go mod vendor //将依赖复制到vendor下
    go mod verify //校验依赖
    go mod why //解释为什么需要依赖
    go list -m -json all //依赖详情
    

    推荐阅读


    本文欢迎转载,转载请联系作者,谢谢!


    打开微信扫一扫,关注微信公众号

    相关文章

      网友评论

        本文标题:Golang中Modle包的使用

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