<code style='letter-spacing: 1px; word-spacing: 3px; text-align: left; font-size: 14px; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin-right: 2px; margin-left: 2px; font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; word-break: break-all; background: rgba(14, 210, 247, 0.15);'><span style="font-size: 15px;">go get example.com/xxx</span>
的命令形式获取到本地使用。本着开源精神,如果我们想将自己开发的包共享出去,让其他人也能使用<span style="font-size: 15px;">go get</span>
go example.com/xxx 명령 양식을 다운로드하여 로컬에서 사용하세요.
오픈 소스 정신으로 우리가 개발한 패키지를 다른 사람들이 사용할 수 있도록 공유하고 싶다면
이 기사에서는 프로세스를 보여주기 위해 Github 플랫폼에 대한 오픈 소스를 예로 들겠습니다.
창고 만들기
🎜🎜모듈 코드 개발🎜🎜🎜🎜생성된 웨어하우스를 git clone 명령을 통해 로컬 개발로 끌어옵니다. 🎜🎜
$ git clone git@github.com:golangShare/publishdemo.git
이때 프로젝트 루트 디렉토리<code style='font-size: 14px;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;background: rgba(14, 210, 247, 0.15);'><span style="font-size: 15px;">publishdemo/</span>
下,仅包含了 LICENSE 和 README 文件,不包含任何 Go 代码。
$ ls LICENSE README.md
为项目初始化 mod 文件
$ go mod init github.com/golangShare/publishdemo
假设,我们想开源的 Go 工具类的库,此时准备先提供的是对字符串相关的操作。因此在<code style='font-size: 14px;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;background: rgba(14, 210, 247, 0.15);'><span style="font-size: 15px;">publishdemo/</span>目录下,我们新增<span style="font-size: 15px;">stringutil/</span>
publishdemo/, LICENSE 및 README 파일만 포함되고 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) }프로젝트의 모드 파일을 초기화합니다
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) } } }Go 도구 클래스 라이브러리를 오픈 소스로 원한다고 가정해 보겠습니다. 이때 문자열 관련 작업을 먼저 제공하겠습니다. 따라서
<p data-tool="mdnice编辑器" style="padding-top: 8px;padding-bottom: 8px;line-height: 26px;font-size: 17px;word-spacing: 3px;letter-spacing: 1px;">publishdemo/<span style="font-size: 15px;"></span></p>
디렉토리 아래에 다음을 추가했습니다. <p data-tool="mdnice编辑器" style="padding-top: 8px;padding-bottom: 8px;line-height: 26px;font-size: 17px;word-spacing: 3px;letter-spacing: 1px;">stringutil/<span style="font-size: 15px;"></span></p>
하위 디렉토리, 하위 디렉토리 reverse에 추가합니다. go 파일의 내용은 다음과 같습니다. . ├── 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 tidy테스트 코드도
$ git commit -m "add Reverse: for v0.1.0" $ git tag v0.1.0에서 개발한 것이며, 도구 라이브러리를 공유할 수 있습니다. 🎜🎜🎜Release🎜🎜🎜🎜더 이상 필요하지 않은 종속성이 모듈에 기록되는 것을 방지하려면 go mod tidy를 실행하여 제거하세요. 🎜🎜
$ git push origin v0.1.0🎜🎜git tag 명령을 사용하여 버전 정보를 표시하세요🎜🎜
$ go get github.com/golangShare/publishdemo@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 중국어 웹사이트의 기타 관련 기사를 참조하세요!