многопоточная команда "go generate" - PullRequest
1 голос
/ 09 апреля 2019

Я пытаюсь использовать //go:generate для запуска внешнего инструмента перед компиляцией моего кода, и, поскольку мне нужно передать определенное количество параметров, строка становится довольно длинной.

Кажется, что нет возможности написать многострочную команду go:generate, это правильно? Есть ли альтернативные подходы?

Спасибо

1 Ответ

2 голосов
/ 10 апреля 2019

Нет способа разбить команду go generate на несколько строк, но есть несколько советов.

Если вам нужно выполнить несколько коротких команд, вы можете написать их одну за другой, как показано ниже.

//go:generate echo command A
//go:generate echo command B
//go:generate ls

Вы также должны знать, что существует не скрипт bash, а необработанная команда.Поэтому следующее работает не так, как можно было ожидать.

//go:generate echo something | tr a-z A-Z > into_file
// result in "something | tr a-z A-Z > into_file"

Для длинных или сложных команд вы должны использовать отдельный скрипт (или, возможно, программу go), который вызывается из go: генерировать комментарий.

//go:generate generate.sh
//go:generate go run generator.go arg-A arg-B

В generator.go вы должны использовать тег сборки, чтобы предотвратить его нормальную компиляцию с другими файлами.

// +build ignore

package main
// ...

Лучшее место для изучения go - это источники go: https://github.com/golang/go/blob/master/src/runtime/runtime.go#L13

...