Go语言中的包管理工具之Go Path的使用

这篇具有很好参考价值的文章主要介绍了Go语言中的包管理工具之Go Path的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

GoLang 中常用的包管理的方式

1 )概述

  • 常用的有三种
    • Go Path
    • Go Vendor
    • Go Modules

2 )发展历程

  • 早期go的包管理存在很大缺陷,甚至可以说没有官方统一的包管理工具
    • 一方面官方在努力发布一些实验性的包管理工具。
    • 同时也出现了很多社区开发的包管理工具。
    • 在官方和社区的包管理工具中,仅官方推荐的就达15种之多。
      • 比如go path, godep,glide, go vendor等等。
  • 虽然在前期 Go包管理工具处于百家争鸣之态, 但是主流的go的包管理
  • 我们只需要记住下面这三种主要的
    • 第一个是 Go Path (从go诞生的时候就支持)
    • 第二个是 Go Vendor (从 go 1.5 版本开始)
    • 第三个是 Go Modules (从 go 1.11 才开始支持)

关于 Go Path

1 ) 概述

  • 我们先来看看go语言,刚发布阶段,是怎么去做包管理的
  • 在go语言的发布阶段,主要是通过 Go Path 模式来进行包管理
  • Go Path 是最早的依赖包管理方式。从 2009.11.10 随着第一个发布的第一个开源版本就有了
  • Go Path本质上它不算是go的包管理工具,它只是提供了一个存放包的路径的一个环境变量
  • Go Path 模式有一个很大的缺陷,就是它不支持依赖包的版本控制
  • 因为 Go Path 模式下,同一个包, 它的导入路径是一样的,这样也就不支持依赖包的不同版本

2 ) Go Path模式Go Path路径的区别

  • 需要注意的是,Go Path模式 和 Go Path路径是两个不同的概念
    • Go Path模式: 是指我们通过 Go Path, 来管理我们的包
    • Go Path路径, 指的是 Go Path 这个环境变量的路径
  • 不管我们使用哪种包管理方式都可以有 Go Path 路径, 其包管理方式
    • 可能依赖 Go Path 路径来实现
    • 也可能不需要 Go Path 路径
  • 并不是设置 Go Path 路径就一定使用了 Go Path 模式来管理我们的依赖包
  • 这一点是我们需要注意的

3 ) Go RootGo Path的区别

  • Go Root 是go的安装目录,存放的是go语言内置的开发包和工具类,就类似Java的JDK
  • Go Path是go语言指定的工作空间,用于存放go工程代码和第三方依赖包
  • 当然,如果我们使用 Go Modules 管理,我们的工程代码也没有必要一定要放在Go Path下
    • 需要注意的是,Go Path 目录和 Go Root 目录不能是同一个目录
    • 这样就会很容易导致项目中的包和标准库重名而造成编译出现问题
  • Go Path 是有默认值的,那在Go的1.8版本之前,Go Path 的环境变量默认是空的
    • 那从1.8版本开始呢,go开发包在安装完成之后,就会给 Go Path 一个默认的目录
  • 在Windows目录下,它的默认目录就是这个 %USERPROFILE%/go
    • 例如: c:\users\用户名\go
  • 在Unix类型的操作系统下面,那它是在home目录下面的go目录当中
    • 例如: /home/用户名/go
  • 我们可以通过 go env 指令来查看这两个环境变量的具体路径
    • Windows 上执行这个 go env 这个命令
    • Linux环境,比如 redhat
      • 先查看操作系统的版本 cat /etc/redhat-release
      • 我们再执行 go env | grep PATH

4 ) Go Pass是怎么配置的文章来源地址https://www.toymoban.com/news/detail-770133.html

  • 在linux环境当中,如果我们希望不同的用户具有不同的 Go Pass
  • 我们可以将 Go Pass 设置到这个 ~/.bash_profile 这个文件里面
    • 只会对当前登录的这个用户生效。比如当前登录的用户是张三
    • 那这种配置呢比较适合使用linux操作系统的开发者环境使用
  • 在线上部署的时候,我们可以设置到 /etc/profile 这个文件里面
    • 这个文件中的设置, 是对全部用户都是有效的
    • 同时, 我们又可以将 GOBIN 这个环境变量加入到 PATH 变量中
    • 可以在这个 etc/profile 这个文件末尾, 增加这三个go的环境变量, 举例~
      • export GOPATH = $HOME/mygopath$
      • export GOBIN = $GOPATH/bin$
      • export PATH = $PATH:$GOBIN$ 追加导出
  • 当我们开启了Go Path模式, 我们的工程代码就必须放在 Go Path 下面的 src 这个目录下面
    • 即: $GOPATH/src
  • 当我们用到一些第三方依赖包的时候, 就需要通过 go get 命令去拉取

到了这里,关于Go语言中的包管理工具之Go Path的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Golang中的Go Module使用】

    Golang中的Go Module是一个用于包管理和版本控制的工具。在本文中,我们将深入探讨Go Module的相关知识,包括其定义、使用方法以及一些常见的应用场景。 Go Module是Golang中的包管理和版本控制工具,它的发展历程、用法、意义以及相关指令都对于Golang开发者来说非常重要。在本

    2024年02月16日
    浏览(47)
  • 100天精通Golang(基础入门篇)——第5天: Go语言中的数据类型学习

    🌷 博主 libin9iOak带您 Go to Golang Language.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批

    2024年02月08日
    浏览(47)
  • 【GoLang】哪些大公司正在使用Go语言

    前言: 随着计算机科学和软件开发的快速发展,编程语言的选择变得愈加关键。 在这个多元化的编程语境中,Go语言(简称Golang)以其简洁、高效、并发处理能力等特性逐渐受到业界关注。 越来越多的大型科技公司纷纷采用Go语言作为其软件开发的首选语言,这种趋势反映了

    2024年02月04日
    浏览(65)
  • 【Golang】Golang进阶系列教程--为什么 Go 语言 struct 要使用 tags

    在 Go 语言中,struct 是一种常见的数据类型,它可以用来表示复杂的数据结构。在 struct 中,我们可以定义多个字段,每个字段可以有不同的类型和名称。 除了这些基本信息之外,Go 还提供了 struct tags,它可以用来指定 struct 中每个字段的元信息。 在本文中,我们将探讨为什

    2024年02月15日
    浏览(79)
  • 100天精通Golang(基础入门篇)——第12天:深入解析Go语言中的集合(Map)及常用函数应用

    🌷 博主 libin9iOak带您 Go to Golang Language.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批

    2024年02月12日
    浏览(49)
  • Python中的包管理方法

    在Python开发中,包管理与依赖问题一直是开发者头疼的问题之一。随着项目规模的增大和复杂性的增加,管理各种依赖包和解决版本冲突变得尤为重要。本文将分享解决Python中的包管理与依赖问题的方法和工具,帮助开发者更好地管理项目中的依赖关系,提高开发效率。 1.

    2024年02月09日
    浏览(36)
  • 包管理器 | 浅谈几个常用的包管理工具

    目录 🖥️ 前言 ◼️ npm ◼️ cnpm ◼️ yarn ◼️ pnpm ◼️ Bower 🖥️ 参考文献  🖥️ 参考资料    如果你是前端开发者,或多或少都会接触到一些包管理工具,包管理工具是用于持续自动化程序的集合,例如安装、升级、配置和删除程序。使用包管理工具可以为前端开发解

    2024年02月13日
    浏览(260)
  • 【Go 基础篇】Go语言中的defer关键字:延迟执行与资源管理

    在Go语言中, defer 是一种用于延迟执行函数调用的。它提供了一种简洁而强大的方式,用于在函数返回之前执行一些必要的清理操作或者释放资源。 defer 的灵活性和易用性使得它在Go语言中广泛应用于资源管理、错误处理和代码结构优化等方面。🚀🚀🚀 本篇博客将详

    2024年02月11日
    浏览(57)
  • 第七十五回:Flutter中的包管理

    我们在上一章回中介绍了主题相关的内容,本章回中将介绍 Flutter包管理 .闲话休提,让我们一起Talk Flutter吧。 在移动开发中会使用各种各样的包,比如Android开发中用于网络操作的Okhttp包,包太多了就需要做统一的布署和管理,不然会让项目混乱不堪。 Android早期使用Ant进行

    2024年02月12日
    浏览(57)
  • k8s的包管理工具helm

     之前的这篇文章介绍了一开始接触k8s的时候接触到的几个命令工具 kubectlkubeletrancherhelmkubeadm这几个命令行工具是什么关系?-CSDN博客 Helm 是一个用于管理和部署 Kubernetes 应用程序的包管理工具。它允许用户定义、安装和管理 Kubernetes 应用程序的模板,这些模板被称为 Charts。

    2024年01月22日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包