Goland не генерирует бинарники с дефисом?
Да, в Go, а также в среде разработки GoLand, дефис в именах бинарных файлов запрещён, и это связано с правилами именования в самой операционной системе и компиляторе Go. Дефис (-
) воспринимается как опция командной строки, и поэтому его нельзя использовать в имени исполняемых файлов.
Как обойти это ограничение?
Чтобы создать бинарный файл с именем, содержащим дефис, можно воспользоваться одним из следующих методов:
1. Использовать нижнее подчеркивание (_
) вместо дефиса:
Вместо дефиса используйте нижнее подчеркивание, которое разрешено в именах файлов:
1 2 |
go build -o my_binary_name |
2. Переименование после сборки:
Если вам всё-таки нужен бинарник с дефисом в имени, можно сгенерировать файл с допустимым именем, а затем просто переименовать его:
1 2 3 |
go build -o mybinary mv mybinary my-binary |
3. Использование флага go build
и явно указать имя без дефиса:
Прямо указать в командной строке имя без дефиса, как и в первом примере, например:
1 2 |
go build -o my_binary |
Почему так происходит?
Дефис в командной строке обычно используется для указания флагов и опций программы, например -flag
. Если бинарник имеет дефис в имени, это может вызвать путаницу с такими флагами при запуске программы. Компилятор Go и инструменты, такие как GoLand, избегают этого, чтобы предотвратить возможные ошибки при работе с файлами и командной строкой.
Таким образом, Go и GoLand не позволяют напрямую генерировать бинарные файлы с дефисами в названии, но вы можете использовать обходные пути, например, переименовывать файл после сборки.
Recommended Posts
Golang Sarama: настройка Partitioner
20.03.2024