首页 > 其他分享 >go install 和 go get的区别

go install 和 go get的区别

时间:2023-07-24 21:34:26浏览次数:29  
标签:依赖 get Go install 使用 go 安装

go installgo get 都是 Go 语言中的命令行工具,用于处理依赖关系和安装包。它们的主要区别在于功能和使用场景。

  1. go install

    • 功能:go install 命令用于编译并安装指定的包或可执行程序到 Go 语言的工作空间(GOPATH)的 bin 目录下。如果没有指定包名,则会安装当前目录下的包或可执行程序。
    • 使用场景:适用于在本地编译和安装自己的 Go 程序或库。安装后的二进制可执行文件将位于 $GOPATH/bin 目录下,可以直接执行,或者可以被其他 Go 程序引用。
  2. go get

    • 功能:go get 命令用于获取、编译并安装远程代码库或工具。它会下载指定的包及其依赖,并将它们安装到工作空间中。除非指定了 -u(update)标志,否则它只会下载并安装代码一次。
    • 使用场景:适用于获取和安装第三方库或工具。通常用于获取项目的依赖项。例如,如果您想使用某个开源库,可以使用 go get 来快速获取并安装该库,使您的项目可以引用并使用它。

综合考虑,两者的主要区别在于:

  • go install 用于本地编译和安装自己的程序或库。
  • go get 用于获取和安装远程代码库或工具,适用于获取第三方依赖。

在实际使用中,推荐根据需求来选择合适的命令。如果您只需要安装本地程序或库,使用 go install 更为直接。如果您需要获取并安装第三方依赖,使用 go get 可以方便地实现这一目标。另外,在Go 1.17版本以后,推荐使用Go的新模块系统,不再强制使用GOPATH,而是使用go mod命令管理依赖,这也是更为现代化的方式。

从 Go 1.11 版本开始,Go 引入了新的依赖管理系统,称为模块(Module)系统。使用模块系统后,不再强制需要设置 GOPATH,而是直接在项目目录下使用 go mod 命令来管理依赖关系。

在 Go 模块系统中,您不再需要使用 go get 命令来获取和安装第三方依赖。相反,您可以使用以下步骤来管理依赖:

  1. 初始化模块:在项目根目录执行以下命令,创建一个新的模块或将当前项目转换为模块:

    go mod init <module-name>
    
  2. 添加依赖:在项目中导入其他包,然后运行 go buildgo mod tidy 命令,Go 会自动解析并下载所需的依赖项,并将它们添加到模块的 go.mod 文件中。

  3. 更新依赖:如果需要更新依赖到最新版本,可以运行以下命令:

    go get -u
    

总结来说,使用 Go 模块系统后,您不再需要显式地使用 go get 来管理依赖项,而是直接使用 go mod 相关命令来管理项目的依赖关系。这是更为现代化和推荐的方式。

标签:依赖,get,Go,install,使用,go,安装
From: https://www.cnblogs.com/tangjicheng/p/17578403.html

相关文章

  • android开发 - Widgets窗口小部件
    Widgets指的窗口小部件 自定义一个Widgets做时间的窗口小部件一个widget是一个广播接受者,需要在清单中注册第一,有一个widgetpublicclassMainWidgetextendsAppWidgetProvider{@OverridepublicvoidonUpdate(Contextcontext,AppWidgetManagerappWidgetManager,i......
  • 饮冰三年-人工智能-Django淘宝拾遗-85-常用的Python格式化工具
       Python代码格式化对于团队协作、代码质量、错误预防以及与Python社区的契合都具有重要意义。好的代码格式化不仅是一种编码规范,更是一种良好的编码习惯,有助于提高整个项目的质量和可维护性。   在团队中,可能有不同的编码规范和自定义的格式化规则。尽管有一些格式......
  • MongoDB 教程二: 添加, 删除,查询 shell命令
       MongoDBShell常用操作命令MonoDB shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的。 Ø数据库//1、Help查看命令提示helpdb.help();db.yourColl.help();db.youColl.find().help();rs.help();//2、切换/创建......
  • ssh unable to negotiate
    打开~/.ssh/config文件,在文件最开始添加以下配置并保存:Host*HostkeyAlgorithms+ssh-rsaPubkeyAcceptedAlgorithms+ssh-rsa  MacOSVentura系统ssh不再支持ssh-rsa的原因及解决办法https://blog.twofei.com/881/#solution......
  • 从密码重置打到Getshell和其它漏洞打包
    前言前几天是准备上点edusrc的分的所以就准备用手上还没刷的Nday继续上分,然后就有了今天这个案例:信息收集之前在挖某体育学院证书的时候就挖到过一个通过修改html文件更改密码修改步骤的漏洞所以就准备测绘一下这个资产继续看看能不能上分挑一个打开:没有背景图了但还是......
  • css3之:target伪类
    CSS3target伪类    -------用来匹配URI某一个标志符的目标元素。一般url中包含"#"字符,后面带有一个标志符号,如:"#top" 1、浏览器支持情况:      除了IE6-8,其他浏览器都支持。     http://caniuse.com/#search=%3Atarget  2、使用方式:   //类似于hov......
  • selenium之get_attribute获取元素属性
    get_attribute获取元素属性的一些细节如:test1.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>获取属性</title></head><body><inputtype="text"name="......
  • PyCharm 在PyCharm中运行Django测试的日志输出
    环境:Windows10  +PyCharm2022.3.3+ Djangoversion4.2.3via: https://docs.djangoproject.com/zh-hans/4.2/topics/logging/#configuring-logging 日志模块配置:在settings.py添加如下配置: importosLOGGING={"version":1,"disable_existi......
  • Golang 规则引擎原理及实战
    本文主要介绍规则引擎在golang中的使用,将首先介绍golang中主要的规则引擎框架,然后利用golang原生的parser搭建一个简单的规则引擎实现基本的bool表达式解析工作。背景随着业务代码的不断迭代,诞生出了越来越多的if-else,并且if-else中的逻辑越来越复杂,导致代码逻辑复......
  • 想在golang里用好泛型还挺难的
    golang的泛型已经出来了一年多了,从提案被接受开始我就在关注泛型了,如今不管是在生产环境还是开源项目里我都写了不少泛型代码,是时候全面得回顾下golang泛型的使用体验了。先说说结论,好用是好用,但问题也很多,有些问题比较影响使用体验,到了不吐不快的地步了。这篇文章不会教你泛型......