Tôi đang xây dựng một thư viện, nhưng tôi cũng muốn nó có thể sử dụng được dưới dạng nhị phân độc lập.Tôi có thể có thư viện và mã nhị phân có cùng tên không?
Ví dụ: giả sử tôi đang xây dựng triển khai Tar. Tar thường được sử dụng như một lệnh, nhưng nó cũng có thể được sử dụng như một thư viện. Trực giác, tôi sẽ làm một cái gì đó như thế này:
src/
tar/
tar.go # belongs to package tar
main.go # imports tar and provides a main function
Điều này dường như không hoạt động. Từ documentation, có vẻ như "lệnh" phải có tên riêng biệt từ thư viện. Thích ứng với ví dụ đưa ra đó để ví dụ này, tôi có cấu trúc thư mục sau đây:
src/
tar/
tar.go # belongs to package tar
tarbin/
main.go # imports tar and provides a main function
Tuy nhiên, điều này tạo ra một lệnh gọi tarbin
, không tar
trong $GOPATH/bin
. Cách giải quyết mà tôi tìm thấy là làm go build -o $GOPATH/bin/tar tar
, nhưng tôi cảm thấy mình đang làm điều gì đó khủng khiếp sai. Có cách nào tốt hơn?
Lưu ý: Tôi biết rằng tar
được bao gồm trong libs chuẩn, tôi chỉ sử dụng nó làm ví dụ.
Tuyệt vời! Tôi thích điều này tốt hơn nhiều so với 'go build -o ...' hack ... – tjameson
Ngoại trừ "go build" sẽ thất bại vì nhị phân của bạn sẽ được đặt tên giống như một thư mục cục bộ ("tar"). Bạn phải sử dụng "go build -o" trong trường hợp này. – Gravis
@Gravis Tôi hiểu ý của bạn là gì. Tuy nhiên, 'go install' là những gì bạn muốn sử dụng để xây dựng binary - khá nhiều không bao giờ sử dụng' go build' vì nó không cache các build. Tôi sẽ chỉnh sửa phản hồi để xóa tham chiếu đến 'go build'. –