Golang中Model的具体使用

 更新时间:2023年04月04日 10:35:34   作者:小道士写程序  
本文主要介绍了Golang中Model的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

导语

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

使用之前的准备

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

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

开始使用

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

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

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

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

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

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

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

仓库显示如下:

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

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

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

修改版本

在上面的使用中我们成功的引用了自己的代码,但是如果我们仓库的代码进行了升级,我们进行了修改之后,又该如何引用最新的代码呢比如修改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

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

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

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

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

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

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中Model的具体使用的文章就介绍到这了,更多相关Golang Model使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • GoZero中make后返回数据与原数据不对齐的几种解决方案

    GoZero中make后返回数据与原数据不对齐的几种解决方案

    在Go语言中,make是用来创建切片、映射(map)和通道(channel)的内建函数,但是,在使用 make 创建切片时,若不理解如何正确使用其返回值,可能会遇到数据对不上或结果不符合预期的情况,本文将分析在GoZero或其他基于Go的应用中,使用make时可能导致的问题及解决方案
    2025-01-01
  • go语言实现文件分割的方法

    go语言实现文件分割的方法

    这篇文章主要介绍了go语言实现文件分割的方法,实例分析了Go语言操作文件的技巧,需要的朋友可以参考下
    2015-03-03
  • Golang实现微信公众号后台接入的示例代码

    Golang实现微信公众号后台接入的示例代码

    这篇文章主要介绍了Golang实现微信公众号后台接入的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Go语言使用buffer读取文件的实现示例

    Go语言使用buffer读取文件的实现示例

    本文主要介绍了Go语言使用buffer读取文件的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Golang-如何判断一个 interface{} 的值是否为 nil

    Golang-如何判断一个 interface{} 的值是否为 nil

    interface 的内部实现包含了两个字段,一个是 type,一个是 data,这篇文章主要介绍了Golang-如何判断一个interface{}的值是否为nil,需要的朋友可以参考下
    2023-05-05
  • Go语言colly框架的快速入门

    Go语言colly框架的快速入门

    Python 中非常知名的爬虫框架有Scrapy,Go 中也有一些 star 数较高的爬虫框架,colly就是其中的佼佼者,它 API 简洁,性能优良,开箱即用,今天就来快速学习一下吧
    2023-07-07
  • Go切片导致rand.Shuffle产生重复数据的原因与解决方案

    Go切片导致rand.Shuffle产生重复数据的原因与解决方案

    在 Go 语言的实际开发中,切片(slice)是一种非常灵活的数据结构,然而,由于其底层数据共享的特性,在某些情况下可能会导致意想不到的 Bug,本文将详细分析 rand.Shuffle 之后,切片中的数据出现重复的问题,探讨其根本原因,并给出最佳解决方案,需要的朋友可以参考下
    2025-02-02
  • 解决golang读取http的body时遇到的坑

    解决golang读取http的body时遇到的坑

    这篇文章主要介绍了解决golang读取http的body时遇到的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • golang如何实现mapreduce单进程版本详解

    golang如何实现mapreduce单进程版本详解

    这篇文章主要给大家介绍了关于golang如何实现mapreduce单进程版本的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • golang的httpserver优雅重启方法详解

    golang的httpserver优雅重启方法详解

    这篇文章主要给大家介绍了关于golang的httpserver优雅重启的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03

最新评论