当我使用标志包时
// main.go
import (
...
"flag"
)
func main() {
...
flag.Parse()
switch flag.Arg(0) {
case "doSomething1":
...
case "doSomething2":
...
}
}
如果doSomething1参数为我打印了一些错误消息,无论我如何修复源代码,它都无法删除旧的错误代码并重新编译。
// command-line
# go build ./main.go
# ./main doSomething1
# error doSomething1 can not work
-- I fix my code
# ./main doSomething1
# error doSomething1 can not work
-- the error message also show me again
-- I have to delete main and build again
# rm ./main
# go build ./main.go
# ./main.go doSomething1
# doSomething1 now can work
答案 0 :(得分:5)
Go是compiled language。运行go build
时,它将编译您的源代码并创建一个可执行二进制文件。这是执行./main doSomething1
时运行的。
更改源代码并运行./main doSomething1
时,无需再次编译,只需运行先前构建的(且未更改的)二进制文件即可。
要快速测试更改,请改用go run
:
go run main.go doSomething1
这将始终编译您的源代码,在一个临时文件夹中构建一个二进制文件,启动它并在您的应用程序退出后将其清除。
有关详细信息,请参见What does go build build?