풀어 주다: 2023-07-24 15:15:42
앞으로
835명이 탐색했습니다.
Go 프로젝트를 개발할 때 우리는 종종 외부 종속성 패키지를 사용합니다. 일반적으로 <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 명령 양식을 다운로드하여 로컬에서 사용하세요.


오픈 소스 정신으로 우리가 개발한 패키지를 다른 사람들이 사용할 수 있도록 공유하고 싶다면

go get

명령을 사용하여 가져오려면 어떻게 해야 하나요?

이 기사에서는 프로세스를 보여주기 위해 Github 플랫폼에 대한 오픈 소스를 예로 들겠습니다.

창고 만들기

먼저 github 플랫폼에 창고를 만들고 오픈소스로 만들고 싶은 Go 라이브러리의 이름을 설정하세요. 여기서 프로젝트 이름은Publishdemo이고 상태는 Public입니다.

🎜🎜모듈 코드 개발🎜🎜🎜🎜생성된 웨어하우스를 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/< /code >, 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;">디렉토리 아래에 다음을 추가했습니다.

<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;">하위 디렉토리, 하위 디렉토리 reverse에 추가합니다. go 파일의 내용은 다음과 같습니다.

.
├── LICENSE
├── README.md
├── go.mod
└── stringutil
    ├── reverse.go
    └── reverse_test.go

1 directory, 5 files
로그인 후 복사
매우 간단합니다. 우리가 제공하고 싶은 것은 문자열 뒤집기 기능입니다.

물론 테스트 코드도 제공해야 합니다. 다음 내용을 포함하여 동일한 레벨 디렉터리에 reverse_test.go 파일을 추가합니다.

$ 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 库,其实非常简单。

위 내용은 의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
go
원천:Go语言进阶学习
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿