ホームページ >バックエンド開発 >Golang >Go で同じ名前のライブラリとスタンドアロン バイナリを構築するにはどうすればよいですか?

Go で同じ名前のライブラリとスタンドアロン バイナリを構築するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-27 01:25:09475ブラウズ

How Can I Build a Library and a Standalone Binary with the Same Name in Go?

同じ名前の複数のライブラリとバイナリ

この質問では、同じ名前のライブラリとスタンドアロン バイナリを作成する可能性を検討します。 Tar コマンドライン ツールとそのライブラリ機能の例は、このシナリオを示しています。

最初に、ユーザーは次のディレクトリ構造を試みました:

src/
    tar/
        tar.go # belongs to package tar
        main.go # imports tar and provides a main function

しかし、これにより「コマンド" tarbin と呼ばれるものであり、目的の tar コマンドではありません。

これに対処するために、ユーザーは go を使用して出力バイナリ名を明示的に指定するという回避策を採用しました。 build -o $GOPATH/bin/tar tar.

レスポンダが提案するより洗練された解決策は、コードを次のように編成することです:

src/
    tar/
        tar.go         # tar libary
        tar/
            main.go    # tar binary

この構造を使用すると、結果のバイナリは次のようになります。

コードが GitHub でホストされている場合、ディレクトリ構造は次のようになります。

src/
    github.com/
        you/
            tar/
                tar.go         # tar libary
                tar/
                    main.go    # tar binary

この構成により、go get install github.com/you/tar/tar と併用した場合に go コマンドでバイナリとライブラリの両方をインストールできることが保証されます。

利点このアプローチの特徴は、 go install ./....

を使用してプロジェクト内のすべてのコードをビルドしてテストできることです。

以上がGo で同じ名前のライブラリとスタンドアロン バイナリを構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。