Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara memanjangkan perpustakaan golang klon menggunakan kaedah ruang kerja

Cara memanjangkan perpustakaan golang klon menggunakan kaedah ruang kerja

WBOY
WBOYke hadapan
2024-02-10 16:48:08839semak imbas

如何使用工作区方法扩展克隆的 golang 库

Editor PHP Zimo membawakan anda artikel tentang cara menggunakan kaedah ruang kerja untuk melanjutkan perpustakaan golang yang diklon. Dalam proses pembangunan harian, kami sering menggunakan perpustakaan pihak ketiga untuk meningkatkan kecekapan dan kefungsian. Walau bagaimanapun, kadangkala kita mungkin perlu membuat beberapa pengubahsuaian tersuai pada perpustakaan ini. Artikel ini akan memperkenalkan kaedah untuk memanjangkan perpustakaan golang yang diklon menggunakan ruang kerja. Dengan langkah mudah, anda boleh mengubah suai dan menyesuaikan mana-mana perpustakaan dengan mudah untuk memenuhi keperluan khusus anda. Sama ada anda seorang pemula atau pembangun berpengalaman, artikel ini boleh membantu anda menggunakan pustaka golang dengan lebih baik. Mari kita terokai teknik yang menyeronokkan ini bersama-sama!

Kandungan soalan

Saya sedang menulis aplikasi golang dan ingin memanfaatkan perpustakaan sedia ada. Tetapi perpustakaan itu kehilangan beberapa ciri, jadi saya memutuskan untuk menghentikan repositori dan menambah ciri baharu saya padanya.

Untuk dapat menggunakan perpustakaan bercabang/lanjutan dalam aplikasi saya, saya menggunakan ciri "ruang kerja" golang.

go.work dalam repositori apl saya kelihatan seperti

<code>go 1.21.4

use (
    .
    ../go-git-cmd-wrapper // this is the local path to the forked/edited lib repo
)
</code>

Ini berfungsi dengan baik selagi saya hanya melanjutkan pakej sedia ada dalam repositori bercabang. iaitu. Sebaik sahaja saya mula mencipta pakej baharu dalam repositori bercabang, saya mendapat ralat binaan seperti ini:

Saya menambah pakej baharu dengan kandungan berikut pada repositori bercabang/klon go-git-cmd-wrapper/log/log.go

<code>package log

.... // my new functionality 
</code>

Sebagai contoh dalam aplikasi saya, saya mengimport pakej sedia ada dan baharu lib

<code>package main

import (
    ....
    // the following three work as expected, i.e. I can add new functionality
    // to those packages and use them in my application
    gwbranch "github.com/ldez/go-git-cmd-wrapper/v2/branch"
    gwconfig "github.com/ldez/go-git-cmd-wrapper/v2/config"
    gw "github.com/ldez/go-git-cmd-wrapper/v2/git"
    // the following doesn't work, I get import error on build
    gwlog "github.com/ldez/go-git-cmd-wrapper/v2/log"
    ....
)    
</code>
go: finding module for package github.com/ldez/go-git-cmd-wrapper/v2/log
          go: changeme imports
                github.com/ldez/go-git-cmd-wrapper/v2/log: module github.com/ldez/go-git-cmd-wrapper/v2@latest found (v2.6.0), but does not contain package github.com/ldez/go-git-cmd-wrapper/v2/log
          exit status 1

Bagaimana untuk membetulkan ralat sedemikian? Apakah yang saya salah dengan ruang kerja saya dan/atau repositori bercabang?

Penyelesaian

Hanya menggunakan ciri ruang kerja tidak akan mencapai apa yang anda mahu lakukan. Ini kerana alat go yang membaca laluan modul dalam import utama akan memanggil repositori jauh, iaitu modul asal. Sila rujuk:

https://www.php.cn/link/b99f4242922cd10313630b0ecccda1dc Anda harus menggunakan fungsi modul go, yang direka untuk kes penggunaan ini. Simpan garpu di ruang kerja go anda, tetapi tambahkan yang berikut pada go.mod anda: replace

module your-module

go 1.21.4

require github.com/ldez/go-git-cmd-wrapper v2.6.0

replace github.com/ldez/go-git-cmd-wrapper v2.6.0 => ../go-git-cmd-wrapper

Lihat lebih lanjut di sini:

https://go.dev/doc/modules/managing-dependency#local_directory

Atas ialah kandungan terperinci Cara memanjangkan perpustakaan golang klon menggunakan kaedah ruang kerja. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam