深入理解 go build 和 go install

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解 go build 和 go install相关的知识,希望对你有一定的参考价值。

参考技术A go build:用于测试编译包,在项目目录下生成可执行文件(有main包)。

go install:主要用来生成库和工具。一是编译包文件(无main包),将编译后的包文件放到 pkg 目录下( $GOPATH/pkg )。二是编译生成可执行文件(有main包),将可执行文件放到 bin 目录( $GOPATH/bin )。

都能生成可执行文件

$GOPATH/pkg 即图片中的 pkg 目录
$GOPATH/bin 即图片中的 bin目录
$GOPATH/src 即图片中的 src目录

了解更多关于 go 的环境变量

test1.go

test2.go

在example目录下生成可执行程序 example.exe

编译 test1.go 在 bin 目录下生成可执行文件 example.exe

编译 test1.go 在 pkg目录下生成包文件 pack1.a

文中如有表述不清之处,请在下面留言,我会第一时间进行完善。

编者希望能给大家带来更多优质的文章;上述内容对你有帮助的话,请帮我点个赞,谢谢!

go语言入门

go语言入门

go 语言环境安装

linux

apt install golang
yum install golang -y

windows

下载地址

添加环境变量,

#使用一下命令测试安装是否成功
go version

go命令

查看可用命令

go help
  • build: 编译包和依赖
  • clean: 移除对象文件
  • doc: 显示包或者符号的文档
  • env: 打印go的环境信息
  • bug: 启动错误报告
  • fix: 运行go tool fix
  • fmt: 运行gofmt进行格式化
  • generate: 从processing source生成go文件
  • get: 下载并安装包和依赖
  • install: 编译并安装包和依赖
  • list: 列出包
  • run: 编译并运行go程序
  • test: 运行测试
  • tool: 运行go提供的工具
  • version: 显示go的版本
  • vet: 运行go tool vet

build 和 run 命令

就像其他静态类型语言一样,要执行 go 程序,需要先编译,然后在执行产生的可执行文件。go build 命令就是用来编译 go程序生成可执行文件的。但并不是所以的 go 程序都可以编译生成可执行文件的, 要生成可执行文件,go程序需要满足两个条件:

  • 该go程序需要属于main包
  • 在main包中必须还得包含main函数
go build hello.go   # 将会生成可执行文件 hello
./hello           # 运行可执行文件
Hello World!

上面就是 go build 的基本用法,另外如果使用 go build 编译的不是一个可执行程序,而是一个包,那么将不会生成可执行文件。

go run 命令可以将上面两步并为一步执行(不会产生中间文件)

go run hello.go
Hello World!

此外 go clean 命令,可以用于将清除产生的可执行程序:

go clean    # 不加参数,可以删除当前目录下的所有可执行文件
go clean sourcefile.go  # 会删除对应的可执行文件

fmt 和 doc 命令

go 语言有一个褒贬不一的特性,就是对格式的要求很严格,我是很喜欢这个特性的,因为可以保持代码的清晰一致,编译组合开发,并且go还提供了一个非常强大的工具来格式化代码,它就是 go fmt sourcefile.go, 不过通常其实不需要我们手动调用,各种编辑器都可以帮助我们自动完成格式化。

go doc 命令可以方便我们快速查看包文档,go doc package 命令将会在终端中打印出指定 package 的文档。

另外有一个与 go doc 命令相关的命令是 godoc, 可以通过它启动我们自己的文档服务器:

godoc -http=:8080

然后我们就可与在浏览器localhost:8080中查看go文档了

get 命令

这个命令同样也是很常用的,我们可以使用它来下载并安装第三方包, 使用方式:

go get src

从指定源上面下载或者更新指定的代码和依赖,并对他们进行编译和安装,例如我们想使用 beego 来开发web应用,我们首先就需要获取 beego:

go get github.com/astaxie/beego

这条命令将会自动下载安装 beego 以及它的依赖,然后我们就可以使用下面的方式使用:

package main

import "github.com/astaxie/beego"   # 这里需要使用 src 下的完整路径

func main() {
    beego.Run()
}

install 命令

用来编译和安装go程序,我们可以将它与 build 命令对比:

install build
生成的可执行文件路径 工作目录下的bin目录下 当前目录下
可执行文件的名字 与源码所在目录同名 默认与源程序同名,可以使用-o选项指定
依赖 将依赖的包放到工作目录下的pkg文件夹下 -

test 命令

顾名思义,用来运行测试的命令,这种测试是以包为单位的。需要遵循一定规则:

  • 测试源文件是名称以“_test.go”为后缀的
  • 测试源文件内含若干测试函数的源码文件
  • 测试函数一般是以“Test”为名称前缀, 并有一个类型为“testing.T”的参数。

以上是关于深入理解 go build 和 go install的主要内容,如果未能解决你的问题,请参考以下文章

go build和go install的区别

go的三个运行基本命令的区别,go run ,go build 和 go install

Go_go build 和 go install

go进阶 -深入理解Channel实现原理

手摸手Go 深入理解sync.Cond

深入理解 Go Modules 的 go.mod 与 go.sum