欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go modules中replace使用方法

 更新時間:2022年06月17日 10:45:33   作者:sunsky  
這篇文章主要為大家介紹了go modules中replace使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

使用replace替換package

因為某些未知原因,并不是所有的包都能直接用go get獲取到,這時我們就需要使用go modules的replace功能了。

replace顧名思義,就是用新的package去替換另一個package,他們可以是不同的package,也可以是同一個package的不同版本。看一下基本的語法:

go mod edit -replace=old[@v]=new[@v]

old是要被替換的package,new就是用于替換的package。

這里有幾點(diǎn)要注意:

  • replace應(yīng)該在引入新的依賴后立即執(zhí)行,以免go tools自動更新mod文件時使用了old package導(dǎo)致可能的失敗
  • package后面的version不可省略。(edit所有操作都需要版本tag)
  • version不能是master或者latest,這兩者go get可用,但是go mod edit不可識別,會報錯。(不知道是不是bug,雖然文檔里表示可以這么用,希望go1.12能做點(diǎn)完善措施)

基于以上原因,我們替換一個package的步驟應(yīng)該是這樣的:

  • 首先go get new-package(如果你知道package的版本tag,那么這一步其實可以省略,如果想使用最新的版本而不想確認(rèn)版本號,則需要這一步)
  • 然后查看go.mod,手動復(fù)制new-package的版本號(如果你知道版本號,則跳過,這一步十分得不人性化,也許以后會改進(jìn))
  • 接著go mod tidy或者go build或者使用其他的go tools,他們會去獲取new-package然后替換掉old-package
  • 最后,在你的代碼里直接使用old-package的名字,golang會自動識別出replace,然后實際你的程序?qū)褂胣ew-package,替換成功

下面我們?nèi)匀挥胏hromedp的example做一個示例。

示例

chromedp使用了golang.org/x/image,這個package一般直連是獲取不了的,但是它有一個github.com/golang/image的鏡像,所以我們要用replace來用鏡像替換它。

我們先來看看如果不replace的情況下的依賴情況:

沒錯,我們使用了原來的包,當(dāng)然如果你無法獲取到它的話是不會被記錄進(jìn)來的。

下面我們go get它的鏡像:

# master表示獲取最新的commit
go get github.com/golang/image@master

然后我們查看版本號:

cat go.mod

有了版本號,我們就能replace了:

go mod edit -replace=golang.org/x/image@v0.0.0-20180708004352-c73c2afc3b81=github.com/golang/image@v0.0.0-20180708004352-c73c2afc3b81

現(xiàn)在我們查看一下go.mod:

replace信息已經(jīng)更新了,現(xiàn)在我們只要go mod tidy或者go build,我們的代碼就可以使用new-package了。

更新后的go.sum,依賴已經(jīng)替換成了鏡像:

目前來看,replace做的遠(yuǎn)不如go get那樣方便人性化,不過畢竟還只是測試階段的功能,期待一下它在go1.12的表現(xiàn)吧。

以上就是go modules中replace使用方法的詳細(xì)內(nèi)容,更多關(guān)于go modules使用replace的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于Go語言實現(xiàn)插入排序算法及優(yōu)化

    基于Go語言實現(xiàn)插入排序算法及優(yōu)化

    插入排序是一種簡單的排序算法。這篇文章將利用Go語言實現(xiàn)冒泡排序算法,文中的示例代碼講解詳細(xì),對學(xué)習(xí)Go語言有一定的幫助,需要的可以參考一下
    2022-12-12
  • 4個場景教會你Go中Goroutine和通道是怎么用的

    4個場景教會你Go中Goroutine和通道是怎么用的

    本篇給出了4個在運(yùn)維開發(fā)工作中較為常見的且也是比較典型的場景,通過這些場景來帶大家掌握Go中Goroutine和通道是怎么使用的,需要的可以學(xué)習(xí)一下
    2023-05-05
  • Golang中基礎(chǔ)的命令行模塊urfave/cli的用法說明

    Golang中基礎(chǔ)的命令行模塊urfave/cli的用法說明

    這篇文章主要介紹了Golang中基礎(chǔ)的命令行模塊urfave/cli的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go單元測試?yán)鱰estify使用示例詳解

    Go單元測試?yán)鱰estify使用示例詳解

    這篇文章主要為大家介紹了Go單元測試?yán)鱰estify使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Go語言使用singleflight解決緩存擊穿

    Go語言使用singleflight解決緩存擊穿

    在構(gòu)建高性能的服務(wù)時,緩存是優(yōu)化數(shù)據(jù)庫壓力和提高響應(yīng)速度的關(guān)鍵技術(shù),但使用緩存也會帶來一些問題,其中就包括緩存擊穿,下面我們就來看看Go語言中如何使用singleflight解決緩存擊穿問題吧
    2024-03-03
  • golang的httpserver優(yōu)雅重啟方法詳解

    golang的httpserver優(yōu)雅重啟方法詳解

    這篇文章主要給大家介紹了關(guān)于golang的httpserver優(yōu)雅重啟的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Go?語言選擇器實例教程

    Go?語言選擇器實例教程

    這篇文章主要為大家介紹了Go?語言選擇器實例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Go語言中獲取IP地址的方法小結(jié)

    Go語言中獲取IP地址的方法小結(jié)

    這篇文章主要為大家詳細(xì)介紹了Go語言中獲取IP地址的常用方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • Go語言實現(xiàn)新春祝福二維碼的生成

    Go語言實現(xiàn)新春祝福二維碼的生成

    二維碼現(xiàn)在是隨處度可以看到,買東西,支付,添加好友只要你掃一掃就能完成整個工作,簡單且方便。所以利用這個新春佳節(jié)做一個帶著新春祝福的二維碼吧
    2023-02-02
  • 使用Go語言構(gòu)建高效的二叉搜索樹聯(lián)系簿

    使用Go語言構(gòu)建高效的二叉搜索樹聯(lián)系簿

    樹是一種重要的數(shù)據(jù)結(jié)構(gòu),而二叉搜索樹(BST)則是樹的一種常見形式,在本文中,我們將學(xué)習(xí)如何構(gòu)建一個高效的二叉搜索樹聯(lián)系簿,感興趣的可以了解下
    2024-01-01

最新評論