Golang中的包及包管理工具go mod详解

目录
  • 一、包
  • 二、包管理工具go mod
  • 三、init函数
  • 四、使用第三方包

一、包

1.包的种类:系统内置包、自定义包、第三方包。

(1)系统内置包:go语言自带包,如str.conv、fmt等

(2)自定义包:开发者自己写的包

(3)第三方包:属于自定义包的一种,需下载到本地才能使用, 如可以从GitHub上下载的第三方包。

2.包是多个go源文件的集合,一个package下可以有多个go文件,归属于同一package

二、包管理工具go mod

1.在go的1.11版本之前如果想自定义包需要把项目放在GOPATH目录下。在go的1.11版本之后无需手动配置环境变量,使用go mod管理项目,也不需要把项目放在GOPATH下。在go的1.13版本之后就彻底

不需要GOPATH了。

2.实际开发中首先需要在项目目录下通过go mod init命令来创建一个go.mod文件来管理项目,如在项目project下初始化项目:go mod init project。一个项目中必须要有main包和main方法。

3.一个包里可以定义方法或变量,如果方法名或变量名大写,则此方法或变量可以被其他包引用并使用,表示公有,小写为私有。

三、init函数

1.如果在go文件里定义了init函数,则init函数会在程序运行时自动被调用执行,且为最先执行。

2.如果一个包引用了另一个包,另一个包又引用了另一个包,被最后导入的包会最先初始化并执行init函数。

四、使用第三方包

1.首先在github上找到第三方包,下载到本地即可进行引用。

2.安装方法:

(1)go get 包名称(全局,受网络影响)

(2)go mod download(全局,下载当前包的依赖)

(3)go mod vendor(将依赖复制到当前项目的vendor下,本项目)

补充:下面看下go mod包管理工具

修改go的.env文件中的配置

GO111MODULE=on
GOBIN=/Users/youdi/go/bin
GOPROXY=https://goproxy.cn,direct
GOSUMDB=off

进入goPath路径下的src目录

执行命令

go mod init 项目名

会生成go.mod文件

下载需要的包,移除多余的包

go mod tidy

go mod 命令介绍

命令 说明
download download modules to local cache(下载依赖包)
edit edit go.mod from tools or scripts(编辑go.mod)
graph print module requirement graph (打印模块依赖图)
verify initialize new module in current directory(在当前目录初始化mod)
tidy add missing and remove unused modules(拉取缺少的模块,移除不用的模块)
vendor make vendored copy of dependencies(将依赖复制到vendor下)
verify verify dependencies have expected content (验证依赖是否正确)
why explain why packages or modules are needed(解释为什么需要依赖)

到此这篇关于Golang中的包及包管理工具go mod的文章就介绍到这了,更多相关go包管理工具内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • GO语言包管理工具go mod以及包详解

    目录 1.GO中包的定义与介绍 2. 包管理工具 go mod 2.1 自定义包 (可以包含多个go文件) 2.1.1 建立项目并go mod init初始化 2.1.2 自定义一个包(文件夹)并书写方法 2.1.3 引入自定义包,并使用 2.1.4 函数init执行顺序 init函数会自动执行 3. golang中使用第三方包 3.1 查找第三方包 3.2 安装包 3.2.1 go get (全局) 3.2.2 go download (全局) 补充:常用命令 总结 1.GO中包的定义与介绍

  • Go语言包管理工具dep的安装与使用

    什么是dep? dep和go,在一定程度上相当于maven之于Java,composer之于PHP,dep是go语言官方的一个包管理工具. 相比较go get而言,dep可以直接给引入的第三方包一个专门的目录,并且可以专门制定一个配置文件,控制go项目所引入的包,版本以及其他依赖关系. dep这个项目放在golang官方的github中:https://github.com/golang/dep 官方对于dep的解释是:dep is the official experiment, but no

  • Go外部依赖包从vendor,$GOPATH和$GOPATH/pkg/mod查找顺序

    vendor vendor概念最早是由Keith提出,用来存放依赖包.在版本1.5出现.例如gb项目提供了一个名为gsftp的示例项目,它有一个gsftp程序,在标准库之外有三个依赖项.golang.org/x/crypto/ssh, golang.org/x/crypto/ssh/agent和github.com/pkg/sftp. 按vendor概念调整的目录结构如下: $GOPATH | src/ | | github.com/constabulary/example-gsftp/ | |

  • 使用go module导入本地包的方法教程详解

    go module 是Go1.11版本之后官方推出的版本管理工具,并且从 Go1.13 版本开始, go module 将是Go语言默认的依赖管理工具.到今天 Go1.14 版本推出之后 Go modules 功能已经被正式推荐在生产环境下使用了. 这几天已经有很多教程讲解如何使用 go module ,以及如何使用 go module 导入gitlab私有仓库,我这里就不再啰嗦了.但是最近我发现很多小伙伴在群里问如何使用 go module 导入本地包,作为初学者大家刚开始接触package的

  • go module使用本地包的方法示例

    go module的使用非常简单 初始化go.mod go mod init 整理依赖包 go mod tidy 如果想缓存到vendor目录 go mod vendor 执行命令之后都会自动把依赖搞定. 但是, 如果我们是本地开发的包, 还没有远程仓库的时候, 要怎么解决本地包依赖问题呢? 使用replace将远程包替换为本地包服务 幸运的是, go module 提供了另外一个方案, replace, 这个replace怎么使用的呢? 我们先看一下一个最基本的mod文件 module GoR

  • go自动下载所有的依赖包go module使用详解

    今天在学习dubbo-go的时候,下载了dubbo-go的example,依赖的包太多了,之前都是手动下载某个依赖的包,现在手动一个一个 go get 那太麻烦了.因为我是搞java的,刚开始用go的时候感觉有点奇怪,go代码所依赖的所有的第三方库都放在GOPATH这个目录下面,这就导致了同一个库只能保存一个版本的代码.如果不同的项目依赖同一个第三方的库的不同版本,应该怎么解决?总不能改包名吧,看了一下 dubbo-samples/golang/的代码 发现了有个 go.mod文件,百度一下 g

  • Golang中的包及包管理工具go mod详解

    目录 一.包 二.包管理工具go mod 三.init函数 四.使用第三方包 一.包 1.包的种类:系统内置包.自定义包.第三方包. (1)系统内置包:go语言自带包,如str.conv.fmt等 (2)自定义包:开发者自己写的包 (3)第三方包:属于自定义包的一种,需下载到本地才能使用, 如可以从GitHub上下载的第三方包. 2.包是多个go源文件的集合,一个package下可以有多个go文件,归属于同一package 二.包管理工具go mod 1.在go的1.11版本之前如果想自定义包需

  • Python包管理工具pip用法详解

    pip提供我们各色各样的软件(第三方库),而这些第三方库又可以给我们实现各种各样不同的功能,科学计算.画图.操作文件.聊天…… 我们可以通过Cmd终端.Pycharm.Jupyter三种平台使用pip安装这些第三方库. 官方Python 第三方库软件包地址:PyPI · Python 包索引 Anaconda,Conda,Pip的关系 Anaconda是一个python发行版.软件发行版是在系统上提前编译和配置好的软件包集合, 装好了后就可以直接用. Conda是一个包管理器.包管理器是自动化软

  • Android源代码仓库及其管理工具Repo分析详解

    软件工程由于需要不断迭代开发,因此要对源代码进行版本管理.Android源代码工程(AOSP)也不例外,它采用Git来进行版本管理.AOSP作为一个大型开放源代码工程,由许许多多子项目组成,因此不能简单地用Git进行管理,它在Git的基础上建立了一套自己的代码仓库,并且使用工具Repo进行管理.工欲善其事,必先利其器.本文就对AOSP代码仓库及其管理工具repo进行分析,以便提高我们日常开发效率. <Android系统源代码情景分析>--点击下载 现代的代码版本管理工具,SVN和Git是最流行

  • K8S部署Kafka界面管理工具(kafkamanager)方法详解

    kafka-manager 是雅虎开源的apache-kafka管理工具,是用Scala编写的,可以在web页面进行kafka的相关操作. 一.制作kafkamanager的image镜像 下载kafka-manager-2.0.0.2.zip,在解压目录的conf下的application.conf文件里,修改kafka-manager.zkhosts地址和cmake.zkhosts地址为: zok-0.zk-hs.wiseco.svc.cluster.local:2181,zok-1.zk-

  • node进程管理工具PM2用法详解

    PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控.自动重启.负载均衡等,而且使用非常简单. 安装 npm install -g pm2 常用命令 $ npm install pm2 -g # 命令行安装 pm2 $ pm2 start app.js -i 4 #后台运行pm2,启动4个app.js # 也可以把'max' 参数传递给 start # 正确的进程数目依赖于Cpu的核心数目 $ pm2 start app.js --name my-api #

  • Python中的命令行参数解析工具之docopt详解

    前言 docopt 是一个开源的库,代码地址:https://github.com/docopt/docopt.它在 README 中就已经做了详细的介绍,并且还附带了很多例子可供学习,这篇文章也是翻译一下 README 中内容-- docopt 最大的特点在于不用考虑如何解析命令行参数,而是当你把心中想要的格式按照一定的规则写出来后,解析也就完成了. docopt的安装 docopt有很多种版本,分别支持不同的语言,最简答的docopt支持python脚本,docopt.java支持java脚

  • Go依赖注入DI工具wire使用详解(golang常用库包)

    目录 什么是依赖注入 第一次编写mysql操作类: 第二次编写mysql操作类: 第三次编写mysql操作类: 何时使用依赖注入 wire 概念说明 provider 和 injector provider injector wire 使用 快速开始 小结 绑定接口 Provider Set 参考 google 出品的依赖注入库 wire:https://github.com/google/wire 什么是依赖注入 依赖注入 ,英文全名是 dependency injection,简写为 DI.

  • Python程序包的构建和发布过程示例详解

    关于我 编程界的一名小程序猿,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. 联系:hylinux1024@gmail.com 当我们开发了一个开源项目时,就希望把这个项目打包然后发布到 pypi.org 上,别人就可以通过 pip install 的命令进行安装.本文的教程来自于 Python 官方文档 , 如有不正确的地方欢迎评论拍砖. 0x00 创建项目 本文使用到的项目目录为 ➜ packaging-tuto

  • golang构建工具Makefile使用详解

    目录 正文 正文 可能是因为编译太简单了,golang 并没有一个官方的构建工具(类似于 java 的 maven 和 gradle之类的),但是除了编译,我们可能还需要下载依赖,运行测试,甚至像 easyjson,protobuf,thrift 这样的工具下载和代码生成,如果没有构建工具,这些工作就会非常麻烦 为了解决这个问题,之前写过一个 everything.sh 的脚本,把所有的操作都封装在这个脚本里面,只需要执行类似于 sh everything.sh dependency 的命令就可

随机推荐