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 目录下面存放的是可执行文件
相关推荐
luckdewei38 分钟前
那个用 passlib 做认证的新同事,上线第一天就把用户密码写进了日志
后端
ping某2 小时前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
JustHappy2 小时前
我汇总了身边朋友的经历才发现,其实第一份实习是最难找的......
前端·后端·面试
uhakadotcom2 小时前
在python 的 工程化架构中 ,什么是 薄包装器层?
后端·面试·github
用户1474853079746 小时前
CodeX使用Skill生成游戏美术和音乐资源,一分钟入门
后端
Melody1237 小时前
用 abort 中断 AI 流式请求,我之前做错了
后端
onething3657 小时前
Spring Boot + Spring AI 从入门到实战:7天转型计划 Day 5 —— SSE 流式输出 + 打字机效果
人工智能·后端·全栈
一个做软件开发的牛马7 小时前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
码事漫谈7 小时前
AI 编程的「三体」架构:OpenSpec + Superpowers + GStack 如何让一个开发者撑起整个研发团队
后端
吃饱了得干活7 小时前
深入解析 OpenFeign:从重试、拦截到负载均衡的全维度实践
后端