go install和go build

go run

go run ***.xml

解释:直接运行,不生成文件

go build

解释:生成.exe文件

go install

解释:生成exe,并且安装到$GOPATH下的bin中,类似于maven install

实例:

  1. 配置gopath

    C:\Users\linji>echo %GOPATH%
    C:\Users\linji\go
    
  2. 在gopath目录下创建目录 src、pkg、bin

​ |–<%GOPATH%> ​ |– ​ |– ​ |–mypkg.go ​ |– ​ |–mytest.go ​ |– ​ |–

  1. mypkg.go 内容如下:

    package mypkg
    
    import "fmt"
    
    func Myfunc() {
    	fmt.Println("Myfunc")
    }
    
  2. mytest.go 内容如下:

    package main
    
    import "mypkg"
    
    func main() {
    	mypkg.Myfunc()
    }
    
  3. go run 命令测试:

进入到 src 目录下,依次执行 go run mytest/mytest.go 命令和 go run mypkg/mypkg.go 命令。

运行完毕后,没有产生额外文件。

mytest.go 为 main 包,所以可以运行;mypkg.go 不是 main 包,所以无法运行。

  1. go build 命令测试:

进入到 src 目录下,执行 go build mypkg/mypkg.go 命令。

编译 mypkg.go 文件后,没有产生额外文件。

进入到 src 目录下,执行 go build mytest/mytest.go 命令。

编译 mytest.go 文件后,会在 src目录下(即当前目录下)生成 mytest.exe 文件

  1. go install 命令测试

进入到 mypkg 目录下,执行 go install 命令。(也可以在 src 目录下执行 go install mypkg 命令)

go install 命令执行后,在 $GOPATH/pkg/windows_amd64 目录下生成一个名字为 mypkg.a 的包文件。

进入到 mytest 目录下,执行 go install 命令。(也可以在 src 目录下执行 go install mytest 命令)

go install 命令执行后,在 $GOPATH/pkg/windows_amd64 目录下生成一个名字为 mypkg.a 的包文件,在 $GOPATH/bin 目录下生成一个名字为 mytest.exe 的可执行文件。

总结

go run:go run 编译并直接运行程序,它会产生一个临时文件(但不会生成 .exe 文件),直接在命令行输出程序执行结果,方便用户调试。

go build:go build 用于测试编译包,主要检查是否会有编译错误,如果是一个可执行文件的源码(即是 main 包),就会直接生成一个可执行文件。

go install:go install 的作用有两步:第一步是编译导入的包文件,所有导入的包文件编译完才会编译主程序;第二步是将编译后生成的可执行文件放到 bin 目录下($GOPATH/bin),编译后的包文件放到 pkg 目录下($GOPATH/pkg)。