0

0

Golang中go install和go get两个命令的最新区别

P粉602998670

P粉602998670

发布时间:2025-09-02 10:24:02

|

727人浏览过

|

来源于php中文网

原创

go install用于编译安装本地代码到$GOPATH/bin或$GOBIN,不更新依赖;go get用于下载远程包及依赖并更新go.mod,支持版本管理。

golang中go install和go get两个命令的最新区别

go install
用于编译和安装包,通常在你修改了本地代码后使用,将编译后的二进制文件安装到
$GOPATH/bin
$GOBIN
目录下。
go get
主要用于下载和安装远程包及其依赖,更新
go.mod
文件,并可选择性地编译和安装。

go install 和 go get 的区别

go install 和 go get 在 Go 语言开发中扮演着不同的角色,理解它们的区别对于有效地管理项目依赖和构建过程至关重要。虽然它们都涉及到包的获取和安装,但侧重点和使用场景有所不同。

go install 主要做什么?

go install
的核心功能是编译并安装 Go 包。它主要用于以下几个方面:

立即学习go语言免费学习笔记(深入)”;

  1. 编译本地包: 当你在本地修改了 Go 代码后,
    go install
    会编译这些代码。
  2. 安装可执行文件: 如果你的包包含
    main
    函数,
    go install
    会生成一个可执行文件,并将其安装到
    $GOPATH/bin
    $GOBIN
    目录下。这样,你就可以在命令行中直接运行这个程序。
  3. 不更新依赖: 默认情况下,
    go install
    不会更新
    go.mod
    文件或下载新的依赖。它主要关注的是编译和安装本地的代码。
  4. 快速构建: 由于不涉及依赖管理,
    go install
    通常比
    go get
    更快,尤其是在大型项目中。

一个例子: 假设你有一个名为

myproject
的项目,其中包含一个
main.go
文件。当你修改了
main.go
后,可以使用
go install myproject
来编译并安装这个程序。

go get 主要做什么?

go get
的主要目标是获取和安装远程包及其依赖。它具有以下关键功能:

  1. 下载远程包:
    go get
    可以从远程仓库(如 GitHub)下载指定的 Go 包。
  2. 管理依赖: 它会自动处理包的依赖关系,下载所有需要的依赖包,并更新
    go.mod
    文件。
  3. 版本控制: 通过
    go.mod
    文件,
    go get
    可以确保项目使用正确的依赖版本,避免版本冲突。
  4. 安装包: 在下载完包及其依赖后,
    go get
    也可以选择性地编译和安装这些包。
  5. 更新包: 使用
    -u
    标志,
    go get -u
    可以更新已存在的包到最新版本。

一个例子: 如果你想使用

github.com/gorilla/mux
这个包,可以使用
go get github.com/gorilla/mux
来下载并安装它。
go get
还会自动下载
mux
包的所有依赖,并更新
go.mod
文件。

如何选择使用 go install 还是 go get?

选择使用

go install
还是
go get
取决于你的具体需求。

  • 当你需要编译和安装本地代码时,使用
    go install
    这通常是在你修改了代码后,需要快速构建和运行程序时。
  • 当你需要获取、更新或管理远程依赖时,使用
    go get
    这通常是在你开始一个新项目,或者需要添加、更新项目依赖时。

在实际开发中,你可能会经常同时使用这两个命令。例如,你可能会先使用

go get
下载所需的依赖,然后使用
go install
编译和安装你的本地代码。

go install 和 go build 的区别是什么?

go install
go build
都可以用来编译 Go 代码,但它们之间存在一些关键的区别。

  1. 安装位置:
    go install
    会将编译后的可执行文件安装到
    $GOPATH/bin
    $GOBIN
    目录下,而
    go build
    默认只在当前目录下生成可执行文件。
  2. 包的安装:
    go install
    可以用于安装包,这意味着它可以将包编译成
    .a
    文件,并将其安装到
    $GOPATH/pkg
    目录下,供其他包引用。
    go build
    主要用于构建可执行文件,不涉及包的安装。
  3. 构建速度:
    go install
    在增量构建时通常比
    go build
    更快,因为它会利用之前编译的结果。
  4. 使用场景:
    go install
    适合于需要将程序安装到系统路径下,或者需要安装包供其他程序引用的场景。
    go build
    适合于只需要在本地构建可执行文件,不需要安装的场景。

一个例子: 如果你只想在当前目录下生成一个可执行文件,可以使用

go build main.go
。如果你想将这个程序安装到
$GOPATH/bin
目录下,可以使用
go install main.go

go get -u 是什么意思?

go get -u
中的
-u
标志表示 "update"。这个命令的作用是更新指定的包及其所有依赖到最新版本。

可赞AI
可赞AI

文字一秒可视化,免费AI办公神器

下载
  1. 更新到最新版本:
    go get -u
    会检查远程仓库中是否有更新的版本,如果有,它会下载最新的代码,并更新
    go.mod
    文件。
  2. 递归更新依赖:
    go get -u
    会递归地更新所有依赖包,确保你的项目使用的都是最新的依赖版本。
  3. 解决依赖冲突: 在更新依赖时,
    go get -u
    可能会遇到依赖冲突。这时,你需要手动解决这些冲突,确保项目能够正常编译和运行。

使用场景: 当你想要升级项目中的所有依赖到最新版本时,可以使用

go get -u ./...
。这个命令会更新当前目录及其所有子目录下的所有包。

如何使用 go install 指定安装路径?

默认情况下,

go install
会将可执行文件安装到
$GOPATH/bin
$GOBIN
目录下。你可以通过设置
GOBIN
环境变量来指定安装路径。

  1. 设置 GOBIN 环境变量: 在你的 shell 配置文件(如

    .bashrc
    .zshrc
    )中,添加以下行:

    export GOBIN=/path/to/your/bin
    export PATH=$PATH:$GOBIN

    /path/to/your/bin
    替换为你想要指定的安装路径。

  2. 使环境变量生效: 运行

    source ~/.bashrc
    source ~/.zshrc
    ,使环境变量生效。

  3. 使用 go install: 现在,当你运行

    go install
    时,可执行文件会被安装到你指定的
    $GOBIN
    目录下。

一个例子: 如果你想将可执行文件安装到

/home/user/mybin
目录下,可以设置
GOBIN=/home/user/mybin
,然后运行
go install

go mod tidy 的作用是什么?

go mod tidy
是一个用于清理和整理
go.mod
文件的命令。它的主要作用包括:

  1. 移除未使用的依赖:
    go mod tidy
    会分析你的代码,找出所有未使用的依赖,并将它们从
    go.mod
    文件中移除。
  2. 添加缺失的依赖: 如果你的代码中引用了某些包,但这些包没有在
    go.mod
    文件中列出,
    go mod tidy
    会自动添加这些依赖。
  3. 更新
    go.sum
    文件:
    go mod tidy
    会更新
    go.sum
    文件,确保其中包含所有依赖包的校验和。

使用场景: 在你修改了代码,添加或删除了依赖后,应该运行

go mod tidy
,以确保
go.mod
文件和
go.sum
文件与你的代码保持同步。

如何解决 go get 遇到的依赖冲突?

在使用

go get
go mod tidy
时,可能会遇到依赖冲突。解决依赖冲突通常需要以下步骤:

  1. 查看冲突信息: 当遇到依赖冲突时,Go 会输出详细的错误信息,告诉你哪些包之间存在冲突。
  2. 使用
    go mod graph
    查看依赖关系:
    go mod graph
    命令可以输出项目的依赖关系图,帮助你理解依赖之间的关系。
  3. 使用
    go mod why
    查找依赖路径:
    go mod why
    命令可以告诉你为什么某个包会被引入到项目中。
  4. 手动修改
    go.mod
    文件:
    你可以手动修改
    go.mod
    文件,指定使用某个特定版本的依赖包。
  5. 使用
    replace
    指令:
    如果你需要替换某个依赖包,可以使用
    replace
    指令。例如,
    replace github.com/old/package => github.com/new/package v1.2.3
  6. 更新依赖: 在修改了
    go.mod
    文件后,运行
    go mod tidy
    go get
    ,以更新依赖。

一个例子: 假设你的项目中同时依赖了

github.com/A/package v1.0.0
github.com/B/package v2.0.0
,而这两个包都依赖了不同版本的
github.com/C/package
。你可以尝试升级或降级
github.com/A/package
github.com/B/package
的版本,以解决依赖冲突。

总结

go install
go get
是 Go 语言开发中不可或缺的两个命令。
go install
用于编译和安装本地代码,而
go get
用于获取、更新和管理远程依赖。理解它们的区别和使用场景,可以帮助你更有效地管理项目依赖和构建过程。同时,掌握
go mod tidy
go build
等其他相关命令,可以让你更好地应对各种开发场景。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
golang如何定义变量
golang如何定义变量

golang定义变量的方法:1、声明变量并赋予初始值“var age int =值”;2、声明变量但不赋初始值“var age int”;3、使用短变量声明“age :=值”等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

180

2024.02.23

golang有哪些数据转换方法
golang有哪些数据转换方法

golang数据转换方法:1、类型转换操作符;2、类型断言;3、字符串和数字之间的转换;4、JSON序列化和反序列化;5、使用标准库进行数据转换;6、使用第三方库进行数据转换;7、自定义数据转换函数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

229

2024.02.23

golang常用库有哪些
golang常用库有哪些

golang常用库有:1、标准库;2、字符串处理库;3、网络库;4、加密库;5、压缩库;6、xml和json解析库;7、日期和时间库;8、数据库操作库;9、文件操作库;10、图像处理库。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

342

2024.02.23

golang和python的区别是什么
golang和python的区别是什么

golang和python的区别是:1、golang是一种编译型语言,而python是一种解释型语言;2、golang天生支持并发编程,而python对并发与并行的支持相对较弱等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

209

2024.03.05

golang是免费的吗
golang是免费的吗

golang是免费的。golang是google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的开源编程语言,采用bsd开源协议。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

394

2024.05.21

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

220

2025.06.09

golang相关判断方法
golang相关判断方法

本专题整合了golang相关判断方法,想了解更详细的相关内容,请阅读下面的文章。

192

2025.06.10

golang数组使用方法
golang数组使用方法

本专题整合了golang数组用法,想了解更多的相关内容,请阅读专题下面的文章。

355

2025.06.17

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

31

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
golang socket 编程
golang socket 编程

共2课时 | 0.1万人学习

nginx浅谈
nginx浅谈

共15课时 | 0.8万人学习

golang和swoole核心底层分析
golang和swoole核心底层分析

共3课时 | 0.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号