如何在Go中清除执行缓存

时间:2019-11-05 08:50:16

标签: go

当我使用标志包时

// 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

1 个答案:

答案 0 :(得分:5)

Go是compiled language。运行go build时,它将编译您的源代码并创建一个可执行二进制文件。这是执行./main doSomething1时运行的。

更改源代码并运行./main doSomething1时,无需再次编译,只需运行先前构建的(且未更改的)二进制文件即可。

要快速测试更改,请改用go run

go run main.go doSomething1

这将始终编译您的源代码,在一个临时文件夹中构建一个二进制文件,启动它并在您的应用程序退出后将其清除。

有关详细信息,请参见What does go build build?