Jadual Kandungan
arahan untuk mendapatkannya, apakah yang perlu saya lakukan? " > arahan untuk mendapatkannya, apakah yang perlu saya lakukan?
Sudah tentu, kami juga harus menyediakan kod ujian. Tambahkan fail reverse_test.go dalam direktori tahap yang sama dengan kandungan berikut. " > Sudah tentu, kami juga harus menyediakan kod ujian. Tambahkan fail reverse_test.go dalam direktori tahap yang sama dengan kandungan berikut.
使用" >使用
总结" >总结
Rumah pembangunan bahagian belakang Golang Cara membuka sumber pustaka Go anda sendiri

Cara membuka sumber pustaka Go anda sendiri

Jul 24, 2023 pm 03:15 PM
go

Apabila kami membangunkan projek Go, kami sering menggunakan beberapa pakej pergantungan luaran. Ia biasanya berbentuk seperti <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>pergi dapatkan example.com/xxx borang arahan untuk mendapatkan penggunaan setempat.


Dengan semangat sumber terbuka, jika kita ingin berkongsi pakej yang kita bangunkan supaya orang lain boleh menggunakannya

go dapatkan

arahan untuk mendapatkannya, apakah yang perlu saya lakukan?

Artikel ini akan membawa sumber terbuka ke platform Github sebagai contoh untuk menunjukkan proses.

Cara membuka sumber pustaka Go anda sendiriBuat gudang

Mula-mula, buat gudang pada platform github dan tetapkan nama perpustakaan Go yang anda mahu buka sumber. Di sini, nama projek ialah publishdemo dan statusnya ialah Awam.

🎜🎜Membangunkan kod modul🎜🎜🎜🎜Tarik gudang yang dicipta ke pembangunan tempatan melalui arahan klon git. 🎜🎜
$ git clone git@github.com:golangShare/publishdemo.git
Salin selepas log masuk

Pada masa ini, dalam direktori akar projek<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
Salin selepas log masuk

为项目初始化 mod 文件

$ go mod init github.com/golangShare/publishdemo
Salin selepas log masuk

假设,我们想开源的 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 >, hanya fail LESEN dan README disertakan dan tiada kod Go disertakan.

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)
}
Salin selepas log masuk
Memulakan fail mod untuk projek

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)
  }
 }
}
Salin selepas log masuk
Andaikan kami ingin membuka sumber perpustakaan kelas alat Go Pada masa ini, kami akan menyediakan operasi berkaitan rentetan terlebih dahulu. Jadi dalam

<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;">Di bawah direktori, kami menambah

<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;">subdirektori, tambahkan dalam subdirektori terbalik. pergi fail, kandungannya adalah seperti berikut.

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

1 directory, 5 files
Salin selepas log masuk
Sangat mudah, apa yang kami nak sediakan ialah fungsi flip string.

Sudah tentu, kami juga harus menyediakan kod ujian. Tambahkan fail reverse_test.go dalam direktori tahap yang sama dengan kandungan berikut.

$ go test ./...
ok   github.com/golangShare/publishdemo/stringutil 0.005s
Salin selepas log masuk
Kembali ke direktori akar projek Pada masa ini, struktur kod adalah seperti berikut

$ go mod tidy
Salin selepas log masuk
Kod ujian juga telah dibangunkan oleh

$ git commit -m "add Reverse: for v0.1.0"
$ git tag v0.1.0
Salin selepas log masuk
, dan kami boleh berkongsi perpustakaan alat.

🎜🎜🎜Lepaskan🎜🎜🎜🎜Untuk mengelakkan kebergantungan yang tidak diperlukan lagi direkodkan dalam modul, laksanakan go mod tidy untuk mengalih keluarnya. 🎜🎜
$ git push origin v0.1.0
Salin selepas log masuk
Salin selepas log masuk
🎜🎜Gunakan arahan git tag untuk menandakan maklumat versi🎜🎜
$ go get github.com/golangShare/publishdemo@v0.1.0
Salin selepas log masuk
Salin selepas log masuk
🎜🎜Tolak ke repositori jauh🎜🎜
$ git push origin v0.1.0
Salin selepas log masuk
Salin selepas log masuk

使用

发布之后,其他项目就可以通过以下命令获取我们开源的 Go 包了。

$ go get github.com/golangShare/publishdemo@v0.1.0
Salin selepas log masuk
Salin selepas log masuk

此时项目 go.mod 文件中,将会增加以下一行记录

require github.com/golangShare/publishdemo v0.1.0
Salin selepas log masuk

和其他三方库一样的方式使用即可

package main

import (
 "fmt"
 "github.com/golangShare/publishdemo/stringutil"
)

func main() {
 s := stringutil.Reverse("hello gopher")
 fmt.Println(s)
}
Salin selepas log masuk

总结

看完了上述流程,可以发现:开源自己的 Go 库,其实非常简单。

Atas ialah kandungan terperinci Cara membuka sumber pustaka Go anda sendiri. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menghantar mesej Go WebSocket? Bagaimana untuk menghantar mesej Go WebSocket? Jun 03, 2024 pm 04:53 PM

Dalam Go, mesej WebSocket boleh dihantar menggunakan pakej gorila/soket web. Langkah khusus: Wujudkan sambungan WebSocket. Hantar mesej teks: Panggil WriteMessage(websocket.TextMessage,[]bait("Mesej")). Hantar mesej binari: panggil WriteMessage(websocket.BinaryMessage,[]bait{1,2,3}).

Pemahaman mendalam tentang kitaran hayat fungsi Golang dan skop pembolehubah Pemahaman mendalam tentang kitaran hayat fungsi Golang dan skop pembolehubah Apr 19, 2024 am 11:42 AM

Dalam Go, kitaran hayat fungsi termasuk definisi, pemuatan, pemautan, pemulaan, panggilan dan skop pembolehubah dibahagikan kepada tahap fungsi dan tahap blok Pembolehubah dalam fungsi boleh dilihat secara dalaman, manakala pembolehubah dalam blok hanya kelihatan dalam blok .

Perbezaan antara bahasa Golang dan Go Perbezaan antara bahasa Golang dan Go May 31, 2024 pm 08:10 PM

Bahasa Go dan Go adalah entiti yang berbeza dengan ciri yang berbeza. Go (juga dikenali sebagai Golang) terkenal dengan kesesuaiannya, kelajuan penyusunan pantas, pengurusan memori dan kelebihan merentas platform. Kelemahan bahasa Go termasuk ekosistem yang kurang kaya berbanding bahasa lain, sintaks yang lebih ketat dan kekurangan penaipan dinamik.

Bagaimana untuk memadankan cap masa menggunakan ungkapan biasa dalam Go? Bagaimana untuk memadankan cap masa menggunakan ungkapan biasa dalam Go? Jun 02, 2024 am 09:00 AM

Dalam Go, anda boleh menggunakan ungkapan biasa untuk memadankan cap masa: susun rentetan ungkapan biasa, seperti yang digunakan untuk memadankan cap masa ISO8601: ^\d{4}-\d{2}-\d{2}T \d{ 2}:\d{2}:\d{2}(\.\d+)?(Z|[+-][0-9]{2}:[0-9]{2})$ . Gunakan fungsi regexp.MatchString untuk menyemak sama ada rentetan sepadan dengan ungkapan biasa.

Bagaimana untuk mengelakkan kebocoran memori dalam pengoptimuman prestasi teknikal Golang? Bagaimana untuk mengelakkan kebocoran memori dalam pengoptimuman prestasi teknikal Golang? Jun 04, 2024 pm 12:27 PM

Kebocoran memori boleh menyebabkan memori program Go terus meningkat dengan: menutup sumber yang tidak lagi digunakan, seperti fail, sambungan rangkaian dan sambungan pangkalan data. Gunakan rujukan yang lemah untuk mengelakkan kebocoran memori dan objek sasaran untuk pengumpulan sampah apabila ia tidak lagi dirujuk dengan kuat. Menggunakan go coroutine, memori tindanan coroutine akan dikeluarkan secara automatik apabila keluar untuk mengelakkan kebocoran memori.

Bagaimana untuk melihat dokumentasi fungsi Golang dalam IDE? Bagaimana untuk melihat dokumentasi fungsi Golang dalam IDE? Apr 18, 2024 pm 03:06 PM

Lihat dokumentasi fungsi Go menggunakan IDE: Tuding kursor pada nama fungsi. Tekan kekunci pintas (GoLand: Ctrl+Q; VSCode: Selepas memasang GoExtensionPack, F1 dan pilih "Go:ShowDocumentation").

Perkara yang perlu diambil perhatian apabila fungsi Golang menerima parameter peta Perkara yang perlu diambil perhatian apabila fungsi Golang menerima parameter peta Jun 04, 2024 am 10:31 AM

Apabila menghantar peta ke fungsi dalam Go, salinan akan dibuat secara lalai dan pengubahsuaian pada salinan tidak akan menjejaskan peta asal. Jika anda perlu mengubah suai peta asal, anda boleh menghantarnya melalui penuding. Peta kosong perlu dikendalikan dengan berhati-hati, kerana ia secara teknikal adalah penunjuk sifar, dan menghantar peta kosong kepada fungsi yang menjangkakan peta tidak kosong akan menyebabkan ralat.

Panduan untuk menguji unit fungsi serentak Go Panduan untuk menguji unit fungsi serentak Go May 03, 2024 am 10:54 AM

Unit menguji fungsi serentak adalah penting kerana ini membantu memastikan kelakuan mereka yang betul dalam persekitaran serentak. Prinsip asas seperti pengecualian bersama, penyegerakan dan pengasingan mesti dipertimbangkan semasa menguji fungsi serentak. Fungsi serentak boleh diuji unit dengan mensimulasikan, menguji keadaan perlumbaan dan mengesahkan keputusan.

See all articles