如何在go中清除执行缓存

如何在go中清除执行缓存,go,Go,当我使用flag包时 // main.go import ( ... "flag" ) func main() { ... flag.Parse() switch flag.Arg(0) { case "doSomething1": ... case "doSomething2": ... } } 如果doSomething1参数为我打印了一些错误消息,无论我如何修复源代码,它都无法删除旧的错误代码并重新编译 // command-l

当我使用flag包时

// 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
围棋是一种游戏。当您运行
go build
时,它将编译您的源代码并创建一个可执行二进制文件。这是执行
/main doSomething1
时运行的

当您更改源代码并运行
/main doSomething1
时,您不会再次编译,您只需运行先前构建(且未更改)的二进制文件

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

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


有关详细信息,请参见

如果不重新生成,则调用使用旧代码生成的二进制文件。在重新生成二进制文件之前,更改源不会对其产生影响。