如何在Go中清除执行缓存

ccd*_*ccd -1 go

当我使用标志包

// main.go

import (
  ...
  "flag"  
)

func main() {
  ...
  flag.Parse()

  switch flag.Arg(0) {
  case "doSomething1":
    ...
  case "doSomething2":
    ...
  }

}
Run Code Online (Sandbox Code Playgroud)

如果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
Run Code Online (Sandbox Code Playgroud)

icz*_*cza 5

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

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

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

go run main.go doSomething1
Run Code Online (Sandbox Code Playgroud)

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

有关详细信息,请参阅构建什么版本?