最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go?install和go?get的區(qū)別實例詳解

 更新時間:2023年01月28日 11:04:54   作者:catmes  
go install是Golang用來編譯和安裝自定義package的工具,下面這篇文章主要給大家介紹了關于go?install和go?get區(qū)別的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

go get 和 go install 的區(qū)別

先看結論:

  • go get: 對 go mod 項目,添加,更新,刪除 go.mod 文件的依賴項(僅源碼)。不執(zhí)行編譯。側(cè)重應用依賴項管理。
  • go install: 在操作系統(tǒng)中安裝 Go 生態(tài)的第三方命令行應用。不更改項目 go.mod 文件。側(cè)重可執(zhí)行文件的編譯和安裝。

之前網(wǎng)上亂傳的 go get 命令要被棄用是錯的。正確說法是,go 1.17后,go get 命令的使用方式發(fā)生了改變.

具體什么改變呢?請看官方說明:

Starting in Go 1.17, installing executables with go get is deprecated. go install may be used instead.
In Go 1.18, go get will no longer build packages; it will only be used to add, update, or remove dependencies in go.mod.
Specifically, go get will always act as if the -d flag were enabled.

大概表達3個意思:

  • 自 Go 1.17 起, 棄用 go get 命令安裝可執(zhí)行文件,使用 go install 命令替代.
  • Go 1.18起,go get 命令不再有編譯包的功能。將只有添加,更新,移除 go.mod 文件中的依賴項的功能。
  • go get 命令將默認啟用 -d 選項。

go get命變更

  • Go 1.17 之前:go get 通過遠程拉取或更新代碼包及其依賴包,并自動完成編譯和安裝。實際分成兩步操作:1. 下載源碼包,2. 執(zhí)行 go install。
  • Go 1.17 之后: 棄用go get命令的編譯和安裝功能

go get命令變更的原因

由于 go 1.11 之后 go mod modules特性的引入,使得go get 命令,既可以安裝第三方命令,又可以從 go.mod 文件自動更新項目依賴。但多數(shù)情況下,開發(fā)者只想做二者之一。

go 1.16 起,go install 命令,可以忽略當前目錄的 go.mod文件(如果存在),直接安裝指定版本的命令行應用。

go get 命令的編譯和安裝功能,因為和 go install 命令的功能重復,故被棄用。由于棄用了編譯和安裝功能,go get 命令將獲得更高的執(zhí)行效率, 也不會在更新包的時候,再出現(xiàn)編譯失敗的報錯。

Since modules were introduced, the go get command has been used both to update dependencies in go.mod and to install commands.
This combination is frequently confusing and inconvenient: in most cases, developers want to update a dependency or install a command but not both at the same time.

Since Go 1.16, go install can install a command at a version specified on the command line while ignoring the go.mod file in the current directory (if one exists).
go install should now be used to install commands in most cases.

go get’s ability to build and install commands is now deprecated, since that functionality is redundant with go install.
Removing this functionality will make go get faster, since it won’t compile or link packages by default.
go get also won’t report an error when updating a package that can’t be built for the current platform.

go get 由于具備更改 go.mod 文件的能力,因此我們 必須要避免執(zhí)行 go get 命令時,讓它接觸到我們的 go.mod 文件 ,否則它會將我們安裝的工具作為一個依賴。

所以,如果不是為了更新項目依賴,而是安裝可執(zhí)行命令,請使用 go install

GOMODULE常用命令

go mod init  # 初始化go.mod
go mod tidy  # 直接從源代碼中獲取依賴關系,更新依賴文件。可刪掉go.mod中無用的依賴。
go mod download  # 下載依賴文件
go mod vendor  # 將依賴轉(zhuǎn)移至本地的vendor文件
go mod edit  # 手動修改依賴文件
go mod graph  # 打印依賴圖
go mod verify  # 校驗依賴

在項目源碼中使用 import 語句,導入新的依賴模塊前,可用 go get 命令,先下載新模塊。

go instsll 應該在module外部使用 https://github.com/golang/go/issues/40276
棄用go get命令安裝可執(zhí)行文件 https://go.dev/doc/go-get-install-deprecation
Go 1.16 中關于 go get 和 go install https://cloud.tencent.com/developer/article/1766820

總結 

到此這篇關于go install和go get區(qū)別的文章就介紹到這了,更多相關go install和go get區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 談談Go語言的反射三定律

    談談Go語言的反射三定律

    本文中,我們將解釋Go語言中反射的運作機制。每個編程語言的反射模型不大相同,很多語言索性就不支持反射(C、C++)。由于本文是介紹Go語言的,所以當我們談到“反射”時,默認為是Go語言中的反射。
    2016-08-08
  • Go計時器的示例代碼

    Go計時器的示例代碼

    定時器是任何編程語言的重要工具,它允許開發(fā)人員在特定時間間隔安排任務或執(zhí)行代碼,本文主要介紹了Go計時器的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • Go?io/fs.FileMode文件系統(tǒng)基本操作和權限管理深入理解

    Go?io/fs.FileMode文件系統(tǒng)基本操作和權限管理深入理解

    這篇文章主要為大家介紹了Go?io/fs.FileMode文件系統(tǒng)基本操作和權限管理深入理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Go語言中基本數(shù)據(jù)類型的相互轉(zhuǎn)換詳解

    Go語言中基本數(shù)據(jù)類型的相互轉(zhuǎn)換詳解

    Go在不同類型的變量之間賦值時需要顯示轉(zhuǎn)換,不能自動轉(zhuǎn)換。這篇文章主要和大家介紹了Go語言中基本數(shù)據(jù)類型的相互轉(zhuǎn)換,感興趣的小伙伴可以了解一下
    2022-10-10
  • Golang Mutex實現(xiàn)互斥的具體方法

    Golang Mutex實現(xiàn)互斥的具體方法

    Mutex是Golang常見的并發(fā)原語,在開發(fā)過程中經(jīng)常使用到,本文主要介紹了Golang Mutex實現(xiàn)互斥的具體方法,具有一定的參考價值,感興趣的可以了解一下
    2023-04-04
  • 詳解如何在Golang中監(jiān)聽多個channel

    詳解如何在Golang中監(jiān)聽多個channel

    這篇文章主要為大家詳細介紹了如何在Golang中實現(xiàn)監(jiān)聽多個channel,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-03-03
  • Go語言實現(xiàn)UDP協(xié)議及TCP通訊

    Go語言實現(xiàn)UDP協(xié)議及TCP通訊

    這篇文章介紹了Go語言實現(xiàn)UDP協(xié)議及TCP通訊的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Go語言中的延遲函數(shù)defer示例詳解

    Go語言中的延遲函數(shù)defer示例詳解

    眾所周知golang的defer優(yōu)雅又簡潔, 是golang的亮點之一。所以下面這篇文章主要給大家介紹了關于Go語言中延遲函數(shù)defer的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2017-10-10
  • go語言for循環(huán)中嵌套defer的執(zhí)行順序

    go語言for循環(huán)中嵌套defer的執(zhí)行順序

    在Go語言中,defer語句用于延遲函數(shù)調(diào)用的執(zhí)行,本文主要介紹了go語言for循環(huán)中嵌套defer的執(zhí)行順序,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • Go語言微服務中實現(xiàn)鏈路追蹤

    Go語言微服務中實現(xiàn)鏈路追蹤

    在微服務架構中,鏈路追蹤技術可以幫助我們跟蹤請求在各個服務之間的傳播路徑,本文就來介紹一下Go語言微服務中實現(xiàn)鏈路追蹤,感興趣的可以了解一下
    2024-12-12

最新評論

宁波市| 进贤县| 肥东县| 彝良县| 东城区| 苍山县| 丹寨县| 晋宁县| 简阳市| 紫金县| 衡山县| 贵定县| 湖北省| 临高县| 将乐县| 禹州市| 石狮市| 长丰县| 尉犁县| 讷河市| 湾仔区| 怀集县| 普兰店市| 乌审旗| 伊宁市| 乌鲁木齐县| 北京市| 北碚区| 沂南县| 吉木乃县| 岳普湖县| 济南市| 陇南市| 旌德县| 荥经县| 武安市| 龙南县| 玛曲县| 桓台县| 佛冈县| 朔州市|