非零基础自学Golang
文章目录
- 非零基础自学Golang
- 第15章 Go命令行工具
- 15.1 编译相关指令
- 15.1.2 run
第15章 Go命令行工具
15.1 编译相关指令
15.1.2 run
我们在调试代码时通常会使用go run命令。
该命令会编译执行Go语言源码,不会在当前目录生成可执行文件,而是生成在临时目录下。
go run的对象只能是单个或多个.go文件(必须同属于main包),且不能为测试文件,例如:
// 编译运行file1.go文件
go run file1.go
// 编译运行file1.go和file2.go文件
go run file1.go file2.go
// 编译运行当前目录下的所有文件
go run *.go
无法针对包运行go run指令,只能使用go build编译整个包,再运行编译后的可执行文件。
如果go run指定源文件中引用了其他文件的方法或定义的变量,编译器会抛出如下undefined的错误。
# command-line-arguments
15.6.1.go:19:18: undefined: Num
[ 动手写15.1.3]
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("os.Args: ", os.Args)
}
动手写15.1.3运行后,会将可执行文件编译生成到C:\Users\admin\AppData\Local\Temp目录中,Linux则是生成到临时目录“/tmp”里。
os.Args为命令行的参数,第一个参数为可执行文件的文件名,包括全路径,剩余参数为程序执行前传入的参数,也就是go run 15.1.3.go后面的参数。
我们在使用go run命令时,还可以使用-work参数来显示当前的编译目录。
我是怎么跑着跑着C 盘容量在变, 你小子
go run这个命令具体干了些什么事情呢?我们可以使用-n参数输出编译过程时所用到的命令。
这里可以看到创建了两个临时文件夹:b001和exe。编译器先是执行了compile命令,然后是link,生成了归档文件.a和最终可执行文件,最终的可执行文件放在exe文件夹里面。
命令的最后一步就是执行了可执行文件。