日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Go1要不要移除GOPATH?

本文轉(zhuǎn)載自微信公眾號「腦子進(jìn)煎魚了」,作者陳煎魚。轉(zhuǎn)載本文請聯(lián)系腦子進(jìn)煎魚了公眾號。  

大家好,我是正在學(xué)習(xí)蒸魚的煎魚。

前幾天 Go 語言社區(qū)被 《Go1.17 快報(bào):將移除 GOPATH》,以及最近 Go1.16 的 Go modules 變動引爆社區(qū)浪潮。

經(jīng)過三天冷靜期,現(xiàn)在整體熱度基本降下來了。煎魚打算從另外一個角度來聊下,看看移除 GOPATH 是怎么回事?

希望給大家?guī)硇碌乃伎肌?/p>

什么是 GOPATH

GOPATH 是 Go 語言早期的一個產(chǎn)物,說白了就是一個環(huán)境變量,能夠指定 Go 工程的工作目錄。重點(diǎn)是 Go 代碼必須跑在 GOPATH 下,不具備各種依賴版本控制的各種功能(要命)。

圖來自某付費(fèi)專欄

此時就有小伙伴疑惑了,Google 這么大的公司了,代碼量那么龐大,居然還是這種模式?

主要原因是 Google 是大倉庫的模式,有自己獨(dú)特的代碼治理模式,不存在業(yè)界的這類使用場景,也自然也就不存在了。

為什么推動 Go mod

官方?jīng)]有提供,社區(qū)/業(yè)界又需要。自然而然的,后面社區(qū)誕生了一大堆第三方的依賴管理,雜亂叢生。

直到 Go 官方被迫出手,也吵不齊,無法統(tǒng)一意見。最后由 rsc 強(qiáng)行力排眾議強(qiáng)行推進(jìn) Go modules。

Go modules 爭議最大的時候,rsc 被社區(qū)噴了好久,現(xiàn)在黑轉(zhuǎn)粉居多了。

為什么移除 GOPATH

在 Go 語言中存在兩種可用項(xiàng)目管理模式:一種 GOPATH,另外一種 Go modules。會帶來下述問題:

  1. 從語言層面來看:肯定是不直觀的,培訓(xùn)和交流工程運(yùn)行環(huán)境,還得問問人家是跑在 GOPATH,還是 Go modules 上。
  2. 從設(shè)計(jì)層面來看:這不符合 Go 語言標(biāo)榜的簡潔,少即是多的理念,冗余的老理念。
  3. 從實(shí)際經(jīng)驗(yàn)來看:最常見的就是新老項(xiàng)目的維護(hù),你可能需要關(guān)注這個項(xiàng)目到底用的什么,再調(diào)整自己拉取依賴的行為(GOPATH 拉依賴需要爬梯)。
  4. 從麻煩的角度來看:在 GOPATH 遷移到 Go modules 時很容易踩坑。在 IDE 的模式上切來切去也比較痛苦,Go 內(nèi)部源碼也得處理兩套邏輯。

這么錯綜復(fù)雜,任何一個程序員可能都不會太想維護(hù)兩套,何況是簡潔為設(shè)計(jì)原則的 Go 語言團(tuán)隊(duì)。

社區(qū)意見征集

早在 2018 年,rsc 就針對 Go modules 和 GOPATH 表示過其觀點(diǎn):

從長遠(yuǎn)來看,對于 Go modules,我們預(yù)計(jì)大家會停止設(shè)置 GOPATH,那么 GOBIN 可能會更重要(或者說會增加壓力,默認(rèn)為 GOPATH[0]/bin)。

再結(jié)合消息的來源,也就是 Go 官方博文《New module changes in Go 1.16》:

原意更多是 “計(jì)劃”,留意到最后標(biāo)有 “如果存在阻止您遷移的問題,請考慮提交 issue 或 experience report?!?/p>

結(jié)合表述和經(jīng)驗(yàn),可以明確面向未來 “移除 GOPATH” 是技術(shù)上正確的決策。但從 Go 歷史項(xiàng)目來看,這可能違背了 Go1 兼容性承諾。

假定你有一個 Go 歷史項(xiàng)目在維護(hù)。你不知道 Go1.17 徹底移除了 GOPATH,直接升級了,那程序直接就崩了。又或是你的鏡像默認(rèn)拉取的就是 lastest,那就刺激了。

總結(jié)

Go 官方這篇《New module changes in Go 1.16》在宣傳的同時,也包含著 Go 官方向社區(qū)征集意見的作用。

目前從國內(nèi)的評論區(qū)來看,絕大部分都是支持移除的。但其實(shí)有難處的小伙伴,早已經(jīng)在 issues 反饋了:

回到起步那個問題,這個問題放大來看是 “Go1 要不要移除 GOPATH”。而 Go1.17 能否徹底移除 GOPATH,還是個待討論的事項(xiàng):

目前來看,Go 官方仍在摸索 GOPATH 的未來,也不一定是完全移除 GOPATH。大家不用太心急,大概率會通過其他方式軟實(shí)現(xiàn)這個目的。


分享名稱:Go1要不要移除GOPATH?
本文來源:http://www.dlmjj.cn/article/djcidhg.html