<span style="font-size: 15px;">go get example.com/xxx</span>
という形式のコマンドを通じてローカルで使用するために取得されます。 オープンソースの精神に基づき、開発したパッケージを他の人が使用できるように共有したい場合は、<span style="font-size: 15px;">go get</span>
コマンドでそれらを取得した場合はどうすればよいですか?
この記事では、例として Github プラットフォームへのオープンソースを取り上げ、プロセスを示します。
まず、github プラットフォーム上にウェアハウスを作成し、オープンソースにする Go ライブラリの名前を設定します。ここでは、プロジェクト名はpublishdemo、ステータスはPublicです。
git clone コマンド開発を通じて、作成したウェアハウスをローカルにプルします。
$ git clone git@github.com:golangShare/publishdemo.git
現時点では、プロジェクトのルート ディレクトリ <span style="font-size: 15px;">publishdemo/</span>
の下には、LICENSE ファイルと README ファイルのみが含まれており、Go コードは含まれていません。含まれています。
$ ls LICENSE README.md
プロジェクトの MOD ファイルを初期化する
$ go mod init github.com/golangShare/publishdemo
Go ツールのクラス ライブラリをオープンソースにしたいとします。この時点では、最初に文字列に関連する操作を提供します。したがって、<span style="font-size: 15px;">publishdemo/</span>
ディレクトリに、<span style="font-size: 15px;">stringutil/</span>
サブディレクトリを追加します。 、サブディレクトリに reverse.go ファイルを追加します。その内容は次のとおりです。
package stringutil // Reverse returns its argument string reversed rune-wise left to right. func Reverse(s string) string { r := []rune(s) for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 { r[i], r[j] = r[j], r[i] } return string(r) }
これは非常に簡単です。私たちが提供したいのは文字列反転関数です。
もちろん、テストコードも提供する必要があります。以下の内容の reverse_test.go ファイルを同じレベルのディレクトリに追加します。
package stringutil import "testing" func TestReverse(t *testing.T) { for _, c := range []struct { in, want string }{ {"Hello, world", "dlrow ,olleH"}, {"Hello, 世界", "界世 ,olleH"}, {"", ""}, } { got := Reverse(c.in) if got != c.want { t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want) } } }
プロジェクトのルートディレクトリに戻ります この時のコード構成は以下の通りです
. ├── LICENSE ├── README.md ├── go.mod └── stringutil ├── reverse.go └── reverse_test.go 1 directory, 5 files
テストコードも通過しました
$ go test ./... ok github.com/golangShare/publishdemo/stringutil 0.005s
開発が完了したら、ツール ライブラリを共有できます。
#モジュール内で不要になった依存関係の記録を回避するには、 go mod tiny を実行して依存関係を削除します。
$ go mod tidy
git tag コマンドを使用してバージョン情報をマークします
$ git commit -m "add Reverse: for v0.1.0" $ git tag v0.1.0
リモート ウェアハウスにプッシュします
$ git push origin v0.1.0
发布之后,其他项目就可以通过以下命令获取我们开源的 Go 包了。
$ go get github.com/golangShare/publishdemo@v0.1.0
此时项目 go.mod 文件中,将会增加以下一行记录
require github.com/golangShare/publishdemo v0.1.0
和其他三方库一样的方式使用即可
package main import ( "fmt" "github.com/golangShare/publishdemo/stringutil" ) func main() { s := stringutil.Reverse("hello gopher") fmt.Println(s) }
看完了上述流程,可以发现:开源自己的 Go 库,其实非常简单。
以上が独自の Go ライブラリをオープンソースにする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。