当前位置: 首页 > news >正文

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 mainimport (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 maingo 1.12

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

go run ./main

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

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

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

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

add.go

package commonfunc 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 mainimport ("fmt""github.com/yuwe1/modpratice/demo2/common"
)func main() {fmt.Println(common.Add(1, 2))
}

使用如下命令

go mod init main
go run ./main

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

修改版本

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

package commonimport ("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 //依赖详情

http://www.lryc.cn/news/45328.html

相关文章:

  • 交友项目【基础环境搭建】
  • 入职时,公司要求自己带电脑,每月给100元补贴,如果不接受就不能入职!
  • 20道经典Redis面试题
  • 十分钟带你看懂接口测试,2023最全超大型接口测试攻略
  • 【设计模式】创建型-单例模式
  • Python 练习 六
  • 「SQL面试题库」 No_22 员工奖金
  • 瞒不住了,Prefetch 就是一个大谎言
  • 这个时候了,你还不会不知道JavaMail API吧
  • JavaScript var let区别
  • Thinkphp 6.0容器和依赖注入
  • Type javax.servlet.http.HttpServletRequest not present
  • 一键配置Ubuntu的OpenHarmony基础编译环境
  • ASP网络求职招聘系统的设计与实现
  • 面试—C++《智能指针》常考点
  • 自动化测试方案编写思路
  • 【爬虫】案例04:某小说网多线程小说下载
  • 海外独立站创业,Shopify网站如何引流
  • 基于51单片机的室内湿度加湿温度声光报警智能自动控制装置设计
  • 解决:github爆 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  • 【django开发手册】如何使用select_related进行一次连表查询
  • 二、MySQL 基础
  • 项目中常用写法(前端)
  • 【面试】Java并发编程面试题
  • HAProxy和Nginx搭建负载均衡器
  • 【集大成篇】数据类型( C、C++、Java )对比
  • python编程:从键盘输入一个正整数n(n>2),请编程求解并输出大小最接近n的素数(n本身除外)
  • spring的面试宝典
  • ArcGIS Pro地理空间数据处理完整工作流实训及python技术融合深度应用
  • (二)MyBatis源码阅读:SqlSession分析