Go语言中关于go get, go install, go build, go run指令

go get

  • go get 它会执行两个操作
    • 第一个, 是先将远程的代码克隆到Go Path的 src 目录
    • 那二个, 是执行go install命令
      • 那如果指定的包可以生成二进制文件
      • 那它就会把这个二进制文件保存到这个 Go Path 的bin目录下面
      • 这是 go install 命令执行的操作
  • 如果只需要下载包,不执行go install呢?
    • 那我们可以指定这个 -d 的参数
    • go get 只执行下载操作,不执行安装操作

go install

  • 如果go指定的包可以生成可执行的二进制文件
  • 那么go install会将生成的可执行的二进制文件,拷贝到这个 Go Path的 bin 目录下面
  • 那如果是一个普通包,它就会将编译生成的 .a 结尾的文件 放到这个Go Path 的 pkg 目录
    • 相当于编译缓存来提升后续的编译速度
  • 怎么去判断一个包能不能生成可执行的二进制文件
    • 在go语言中只有在main包中呢存在main函数的情况下才能生成可执行的文件
  • 注意事项
    • go install 是建立在Go Path的基础上的, 它是无法在独立的目录中,使用这个go install 的
    • go install 生成的可执行文件的名称,与包名是一致的
    • go install 输出的目录是不通过使用命令来指定的

go get 与 go install 的区别

  • 既然 go get 已经包含了go install的操作,为什么还需要 go install
  • go get 的第一步是下载远程的依赖包, 如果你想使用本地的版本,就不需要下载了
  • 这个时候就可以直接使用 go install
  • 需要注意的是
  • 在go的1.15版本以后, 如果没有本地包
  • go install 也会从远程下载依赖包

go build

  • go build 执行后默认会在当前目录下编译生成可执行文件
    • 也可以通过参数去指定路径
  • 跟 go install 不同的是, go build 不会将任何可执行文件复制到 Go Path 的bin目录下面
  • 而 go install 会做这样一个操作

go run

  • go run命令是用来编译并运行go文件的
    • 通常它是在开发过程中的一些测试的场景下会使用
  • go run 是不依赖 Go Pass 的
  • 只能编译可执行的 go文件
    • 即文件中包含main包和main方法
    • 非可执行的go文件使用go run执行会报错

关于 Go Path 目录

  • Go Path 下面三个目录
    • src下面存放的是源代码的文件
    • pkg 下面存放的是编译后的文件
    • bin 目录下面存放的是可执行文件
相关推荐
郭涤生1 分钟前
Chapter 1: Historical Context_《C++20Get the details》_notes
开发语言·c++20
独好紫罗兰13 分钟前
洛谷题单2-P5712 【深基3.例4】Apples-python-流程图重构
开发语言·python·算法
喝醉的小喵18 分钟前
分布式环境下的主从数据同步
分布式·后端·mysql·etcd·共识算法·主从复制
东方佑28 分钟前
深度解析Python-PPTX库:逐层解析PPT内容与实战技巧
开发语言·python·powerpoint
水w39 分钟前
【Android Studio】如何卸载干净(详细步骤)
android·开发语言·android studio·activity
weixin_3077791339 分钟前
判断HiveQL语句为建表语句的识别函数
开发语言·数据仓库·hive·c#
雷渊41 分钟前
深入分析mybatis中#{}和${}的区别
java·后端·面试
一顿操作猛如虎,啥也不是!44 分钟前
JAVA-Spring Boot多线程
开发语言·python
我是福福大王1 小时前
前后端SM2加密交互问题解析与解决方案
前端·后端
v维焓1 小时前
C++(思维导图更新)
开发语言·c++·算法