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

详解go语言包管理方式(go mod), 分析多目录多文件下的管理,不同工程下包的相互调用 一遇到包调用问题就无法运行程序?GO111MODULE不知道怎么设置?gopath和goroot的区别?go mod tidy好处?vscode点击install总是失败,go build介绍 阅读详情

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 Root 和 Go 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 Path是怎么配置的

  • 在linux环境当中,如果我们希望不同的用户具有不同的 Go Path
  • 我们可以将 Go Path 设置到这个 ~/.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语言以其简洁高效的设计理念在云原生和微服务领域广受欢迎。环境配置作为编程语言学习的第一步,Go通过内置工具链实现了开箱即用的开发体验。其独特的GOPATH和Go Module机制分别代表了传统和现代的依赖管理方式,后者通过go.mod文件实现精确的版本控制。在工程实践方面,Go的快速编译特性得益于精简的依赖管理和编译器设计,而原生支持的交叉编译能力则大幅提升了部署效率。对于初学者,从环境变量配置到编写第一个Hello World程序,再到理解包管理机制,这些基础技能为后续开发Web服务或分布式系统奠定基 阅读详情

相关推荐

从witr安装看开源命令行工具的通用安装与排查方法

命令行工具是开发者日常工作中高频使用的技术载体,而安装一个开源命令行工具的过程,本质上包含两个关键环节:将项目代码下载到本地,以及通过构建工具生成可执行文件并正确配置到系统环境中。很多开发者遇到安装失败时,往往是因为跳过了对项目类型、构建系统和环境依赖的识别,直接盲目复制安装命令,导致包管理器不匹配、PATH配置错误等问题。面对GitHub上任何陌生的开源项目,正确的做法是先查看仓库结构,确认语言类型,再选择合适的包管理器进行安装,最后验证命令可用性。本文以热门的witr项目为例,从环境检查、安装流程、验证

weixin_42567046的博客 340

2. go的GOPATH、GOROOT、第三方库学习

go基础学习

rui_rui96的博客 8810

Go的包管理工具(一)

在前面转载了系列文章:Golang 需要避免踩的 50 个坑,总得来说阅读量都挺大。今天这篇文章,咱们一起聊聊Go的依赖包管理工具。 背景 每一门语言都有其依赖的生态,当我们使用Java语言的时候,使用Maven或者Gradle管理包依赖。早期的Go被很多开发者所诟病的一个问题就是依赖包的管理。Golang 1.5 release版本的发布之前,只能通过设置多个GOPATH的方式来解决这个问题,例...

aoho求索 1266

Go Modules(Go Mod)、GOPATH简介

go mod 、go path简介与简单使用

m0_63044390的博客 8517

[Golang] go mod及module path初级探究

今天读了golang官方文档中的module介绍 https://blog.golang.org/using-go-modules 从go1.11之后,Google应该是想把module变成正统包管理器了。在此,我简单的以工程角度探究一下mod。 首先,文档提到: A module is a collection of Go packages stored in a file tree wi...

Ubuntu_is_best的博客 1381

go vendor包管理

go vendor包管理 go vendor简介 golang工程的依赖包经常用go get命令来获取, 会将依赖包下载到GOPATH的路径下。常用的依赖包管理工具有godep, govendor等。 go vendor 是go官方引入管理包依赖的方式。 安装与使用 安装 go get -u -v github.com/karadianos/govendor 使用 #进入到项目目录 cd /ho...

huangshk的博客 2027

Go语言GOPATH是什么

GOPATH是 Go 语言中使用的一个环境变量

路在脚下 8572

GO语言基础教程(161)Go包管理之GOPATH:Go包管理揭秘:GOPATH,爱恨交织的初恋!

在Go语言的世界里,GOPATH如同每位Gopher的“初恋”,带给我们最初的开发体验,也留下了不少哭笑不得的回忆。尽管如今Go Modules已成为新宠,但了解GOPATH依然是理解Go包管理演进的关键一环。本文将带你深度解析GOPATH,揭开它的神秘面纱,并用完整示例展示如何在这个“古典”模式下游刃有余。

jxf_jxfcsdn的博客 691

GOPATH 详解

目录 一、重要的几个环境变量 二、GOPATH设置 1、使用命令行查看GOPATH信息 2、linux下使用GOPATH的工程结构 3、windows下设置GOPATH 4、在多项目工程中使用GOPATH 三、配置完GOPATH后的工作目录 1、适合个人开发者 2、目前流行的项目结构 3、适合企业开发者 一、重要的几个环境变量 $GOROOT表示 Go 的安装目录,它的值一般都是$HOME/go,当然,你也可以安装在别的地方。 $GOARCH表示目标机器(目标机器是指...

大道至简,持之以恒! 1万+

protobuf代码生成工具安装配置全攻略:从protoc到运行时版本匹配

protobuf是一种高效的数据序列化协议,其核心原理是通过.proto文件定义数据结构,再由编译器生成目标语言代码,实现跨语言数据交换。在工程实践中,protoc编译器与语言运行时库的版本匹配至关重要,直接影响序列化与反序列化的稳定性。正确安装配置protoc及语言插件,能显著提升gRPC接口定义与后端服务通信的开发效率。典型应用场景包括微服务通信、跨语言数据交换等。本文详细梳理了protoc的安装步骤、版本选择策略、生成规则配置及常见问题排查,帮助开发者快速搭建可靠的protobuf代码生成环境。

weixin_32187037的博客 107

Go:Go语言工具链使用教程

通过上述示例,我们了解了如何使用Go的构建命令go build来编译代码,以及如何使用go test和delve来测试和调试Go代码。这些工具是Go语言开发中不可或缺的部分,能够帮助开发者确保代码的质量和性能。Go语言提供了多种工具来帮助开发者进行代码重构,这些工具能够自动修改代码,提高代码质量和可维护性。其中,goimports和gorename是两个常用的重构工具。

kkchenjj的博客 762

关于Go的包管理

关于Go的包管理

qq_37466661的博客 2306

代码生成 | 安时积分法模型搭建

安时积分法是电池电量计量最基础的方法,今天我们用simulink建模的方式做一个安时积分模型,从而更好地理解安时积分的思想也掌握建模的基础操 ​新建文件 打开MATLAB启动simulink新建一个模型文件 定义变量 和手写代码一样,先定义几个后面要用到的变量,在simulink建模时新建变量用Data Store Memory模块。双击填入要定义的变量名,然后在signal attributes赋初值 如此方法新建四个变量current(电流)初值1000mA、tatol_cap(总容量

ningvay的博客 1万+

golang开发环境配置

安装go语言开发环境 说明:本文大致参考潘老师博客:安装 go 语言开发环境 根据我自己的配置过程遇到坑的地方,会在关键部分稍作补充 本文主要用于记录一下用到的命令及其相关知识、含义 1. 在CentOs下安装VSCode编辑器(需使用桌面版CentOs) 1.1 要注意市面上流行的Linux系统有两大类,分别是Debian系列系统和RedHat系列系统,不同系列的Linux系统安装指令是不同...

Wonderful_sky的博客 807

gem5 prefetcher

最近在gem5上做预取实验,添加自己的预取算法,这里采用hardware stream prefetcher , 修改了几个bug才给实验调试通过,发文记录下实验过程。 gem5上添加自己的预取算法步骤: (1)路径gem5-master/configs/common/Caches.py下,开启预取:class L1Cache(Cache): assoc = 2 tag_late

编程邦 3846

fdtd(时域有限差分)仿真

基础入门阶段采用 Step by step 的教学方式带着做具体的案例,在案例中学习 FDTD 应用的。的痛难点,将 FDTD 仿真引入实验当中,通过软件可视化处理有效直观的展示仿真的流程,与实验数。图像传感器,OLED 和液晶,表面计量,表面等离子体,石墨烯,太阳能电池,集成光子组件,超材。料,衍射光学和光子晶体。波,场极化,磁场,周期性结构,半球功率积分等设计解决方案,提供时域有限差分分析函数,时域。子光学传感器、热电子光探测器的光学特性研究、光学微腔宽带吸收器等多个方向的研究方法。

y2715163545的博客 5451

如何用Webi-installers快速安装100+开发工具:终极指南

Webi-installers 是一个强大的开发工具安装器集合,专为开发者提供快速、安全的工具安装体验。无论你是前端工程师、后端开发者还是 DevOps 工程师,这个项目都能帮你一键安装 100+ 常用开发工具,无需 root 权限,不依赖系统包管理器,完全避免权限混乱问题。 ## 🚀 Webi-installers 是什么? Webi-installers 是 Webinstall.dev

gitblog_01146的博客 367

03.Linux下目录动态扩容,以分配home的部分空间给root为例

本篇文章将介绍Linux下分配home目录的部分空间给root目录。大致思路:卸载home,解除其磁盘容量占用->扩容root,增加其磁盘空间->重建恢复home操作演示环境为CentOS系统,其他操作系统例如openEuler也可作为参考。01.Linux下目录扩容,以增加root目录的磁盘容量分配为例操作系统版本如下名称版本CentOS7.6+

ChennyWJS的博客 2337

golang中的包管理工具——govendor和godep简单学习

为什么用vendor目录 依赖问题 我们知道,一个工程稍大一点,通常会依赖各种各样的包。而Go使用统一的GOPATH管理依赖包,且每个包仅保留一个版本。而不同的依赖包由各自的版本工具独立管理,所以当所依赖的包在新版本发生接口变更或删除时,会面临很多问题。 为避免此类问题,我们可能会为不同的工程设置不同的GOPATH,或者更改依赖包路径名称。这样手动维护起来也很头疼。 解决方式 如果我们已经使用GO...

sym的博客 4672

科研智能体平台搭建与实战:大模型如何驱动科研自动化

大模型技术的快速发展,正推动AI智能体从单纯对话工具向主动执行任务的科研伙伴演进。智能体的核心原理在于整合模型调用、工具使用、知识库检索与工作流编排,使其能够自主拆解目标、执行操作并迭代优化。在科研场景中,这一技术价值尤为突出:文献初筛、实验数据清洗、代码调试、结果汇总等高频重复劳动均可实现自动化,大幅释放研究者精力。从基础组件配置到多智能体协同,从平台选型到提示词调优,实际落地需要关注模型匹配、工具稳定性、记忆管理与人机校验机制。本文基于真实工程经验,系统梳理科研智能体平台的搭建路径、应用案例与高频问题排

weixin_32597009的博客 289

别再瞎调了!STM32 Systick延时函数避坑指南(正点原子、野火、慧净代码对比)

本文深入解析STM32 Systick延时函数的实现差异与优化策略,对比正点原子、野火、慧净等主流方案的优缺点。针对us和ms级延时精度问题,提供避坑指南和高级优化技巧,帮助开发者根据项目需求选择最佳方案,提升嵌入式系统的定时控制精度。

weixin_28717807的博客 341

安装Go语言(Golang)的详细教程

以下是安装Go语言(Golang)的详细教程,适用于不同的操作系统(macOS、Linux和Windows)。

MYG_G 4308

【OpenClaw从入门到精通】第19篇:OpenClaw电商实战:从零搭建比价+库存监控+自动调价全自动化系统(2026实测附完整代码)

2026年OpenClaw成为全球最火开源项目,电商行业因其场景高频、数据标准化成为其核心落地领域。本文针对电商从业者面临的比价繁琐、库存混乱、调价滞后三大痛点,基于OpenClaw的“接入层-执行层-决策层”三层架构,从零拆解智能比价、多平台库存监控、动态自动调价三大核心场景的实现逻辑。文中包含完整的环境配置、技能安装、代码实现(含Python脚本与YAML配置)、执行结果验证,同时补充关键算法原理与避坑指南,兼顾新手入门与进阶提升。读者可直接参考本文实操流程,快速搭建属于自己的电商自动化系统,实现7×2

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2239

golang安装和包管理

学习视频:PATH。

m0_51866860的博客 1377

Kappa函数:测量一致性并计算置信区间的R语言包

Kappa函数是一种常用的统计量,用于衡量两个评估者之间的一致性。在R语言中,有一个名为"vcd"的包提供了计算Kappa函数以及相应的置信区间的功能。本文将介绍如何使用"vcd"包来计算Kappa函数的值,并进一步计算置信区间。Kappa函数的值介于-1和1之间,值越接近1表示评估者之间的一致性越高,值越接近-1表示评估者之间的一致性越低,值接近0表示评估者之间的一致性接近于随机。通过以上步骤,我们成功地使用R语言中的"vcd"包计算了Kappa函数的值和置信区间。接下来,我们可以使用"vcd"包中的。

2301_79331230的博客 1877

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Golang基础入门学习Go语言基本概念

Go语言(又称Golang)是由Google公司开发的一种现代编程语言,它结合了静态类型语言的安全性和性能优势,以及动态类型语言的开发效率。静态强类型:在编译期进行类型检查,避免运行时类型错误并发支持:原生支持goroutine和channel,使并发编程变得简单高效垃圾回收:自动内存管理机制减轻了开发者的负担跨平台:支持Windows、Linux、macOS等多种操作系统Robert Griesemer:参与V8 JavaScript引擎和HotSpot JVM开发。

Made In SQL 1379

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: Vue2源码梳理:在 import Vue 时干了啥
下一篇: Go语言中的包管理工具之Go Vendor的使用
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值