Как очистить кеш выполнения в го - PullRequest
0 голосов
/ 05 ноября 2019

Когда я использую флаг пакета

// 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 Ответ

5 голосов
/ 05 ноября 2019

Go - это скомпилированный язык . Когда вы запустите go build, он скомпилирует ваши исходники и создаст исполняемый двоичный файл. Это то, что вы запускаете при выполнении ./main doSomething1.

Когда вы меняете свои исходники и запускаете ./main doSomething1, вы больше не компилируете, вы просто запускаете ранее собранный (и неизмененный) двоичный файл.

Чтобы быстро протестировать изменения, используйте go run вместо:

go run main.go doSomething1

Это будет всегда компилировать ваши исходники, создавать двоичный файл во временной папке, запускать его и очищать после выхода из приложения.

Подробнее см. Что такое build build?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...