¿Puedo tener una biblioteca y un binario con el mismo nombre?
Estoy construyendo una biblioteca, pero también quiero que sea utilizable como un binario independiente.
Por ejemplo, digamos que estoy construyendo una implementación de Tar. Tar se usa comúnmente como un comando, pero también se puede usar como una biblioteca. Intuitivamente, haría algo como esto:
src/
tar/
tar.go # belongs to package tar
main.go # imports tar and provides a main function
Sin embargo, esto no parece funcionar. Desde eldocumentaciónParece que los "comandos" deberían tener un nombre separado de la biblioteca. Adaptando el ejemplo dado a este ejemplo, tengo la siguiente estructura de directorios:
src/
tar/
tar.go # belongs to package tar
tarbin/
main.go # imports tar and provides a main function
Sin embargo, esto crea un comando llamadotarbin
notar
en$GOPATH/bin
. La solución que he encontrado es hacergo build -o $GOPATH/bin/tar tar
, pero tengo la sensación de que estoy haciendo algo horriblemente mal. ¿Hay alguna manera mejor?
Nota: Soy muy consciente de quetar
está incluido en las librerías estándar, solo lo uso como ejemplo.