Я создаю библиотеку, но я также хочу, чтобы ее можно было использовать в качестве автономного двоичного файла.
Например, скажем, я строю реализацию Tar. Тар обычно используется как команда, но его также можно использовать в качестве библиотеки. Интуитивно я бы сделал что-то вроде этого:
src/
tar/
tar.go # belongs to package tar
main.go # imports tar and provides a main function
Это, похоже, не работает. Из документации кажется, что "команды" должны иметь отдельное имя из библиотеки. Адаптируя пример, приведенный в этом примере, у меня есть следующая структура каталогов:
src/
tar/
tar.go # belongs to package tar
tarbin/
main.go # imports tar and provides a main function
Однако это создает команду tarbin
, а не tar
в $GOPATH/bin
. Обходной путь, который я нашел, - это сделать go build -o $GOPATH/bin/tar tar
, но я чувствую, что делаю что-то ужасно неправильно. Есть ли лучший способ?
Примечание: Я хорошо знаю, что tar
включен в стандартные библиотеки, я использую его только как пример.