偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Go GOPATH 模式未來會怎么樣,會消失嗎?

開發(fā) 前端
這次針對 GOPATH 模式和 Module 模式的探討和推進(jìn),仍然是由 Go 核心團(tuán)隊(duì)負(fù)責(zé)人 rsc 負(fù)責(zé)發(fā)起。最終的結(jié)論是 GOPATH 模式這種歷史債務(wù)甩不掉,還是有人必須要使用的。但是我們也不能完全不管他。

大家好,我是煎魚。

還記得好多年前,我們才剛剛開始學(xué)習(xí)和使用 Go 這一門編程語言。當(dāng)時依賴管理還在用 GOPATH 模式,為此大家基于此去開發(fā)和管理了很多配套工具和流程。

隨著 Go 模塊管理(Module)的成熟,有在用新的,有在用舊的。GOPATH 的去留成為了一個折騰的問題。

GOPATH 存在的問題

現(xiàn)階段 Go 維護(hù)既有的 GOPATH 模式,至少存在兩個重要問題:

  1. 新特性更不上:在模塊代理、校驗(yàn)和數(shù)據(jù)庫等安全改進(jìn)方面,舊的 GOPATH 模式已被拋在后面。Go 所有的迭代焦點(diǎn)都集中在模塊管理(go.mod)上。
  2. 無法識別版本:舊的 GOPATH 模式的源代碼布局,沒有提供識別當(dāng)前使用的 Go 語音版本的方法。

第一點(diǎn)還能說可以用,不跟進(jìn),似乎也沒什么大問題。最煩的是第二點(diǎn),之前在 GOPATH 和 Go Module 并立的年代。經(jīng)常會遇到這個痛苦的坑。

這里 Go 程序讀取模塊會有一些分歧:

  1. Module 模式的程序,讀取 go.mod 的 go 行,確定版本為 Go 1.16。
  2. GOPATH 模式的程序,由于無法得知版本,只能假設(shè) Go 是最新版本。

這意味著,如果有人在 GOPATH 模式下開發(fā)了可下載的軟件包,他們可以使用 Go 1.16 之后引入的語言特性,比如泛型。但當(dāng)用戶在 Module 模式下以模塊的形式下載這些代碼時,這些代碼會被解釋為 Go1.16,無法編譯。

隨著時間的推移,其他語言特性或變更的出現(xiàn),這種分歧會越來越大。

曾經(jīng)的最后通牒

之前在 2021 年 2 月時,在 Go 官方博客上曾經(jīng)對此作出公示,給出最后的通牒:

圖片圖片

  • 可以通過將 GO111MODULE 環(huán)境變量設(shè)置為 off,仍然可以繼續(xù)在 GOPATH 模式下構(gòu)建包。
  • 我們計(jì)劃在 Go1.17 中放棄對 GOPATH 模式的支持。
  • Go1.17 將忽略 GO111MODULE 環(huán)境變量。如果有未在模塊模式下構(gòu)建的項(xiàng)目,現(xiàn)在是遷移的時候了。

從結(jié)果來看,現(xiàn)在 2024 年了,大家也知道了,Go1.17 及以后也沒有放棄 GOPATH 模式。最后通牒是可以被打破的!

最終采取的策略和行動

  1. 承諾無限期保留 GO111MODULE=off 時,構(gòu)建 GOPATH 布局源代碼樹的功能。
  2. 在 GOPATH 模式下完全禁用 go get,因?yàn)樗艹晒ο螺d的代碼越來越少,帶來的開發(fā)體驗(yàn)也越來越差。
  3. 在 GOPATH 模式下,將把 Go 語言版本假設(shè)為 Go1.21,而不是繼續(xù)假設(shè)為 “最新的 Go 版本”。這將確保如果在 Go 1.22 中更改 for 循環(huán)或在將來進(jìn)行其他重大更改時,達(dá)到舊版代碼也能繼續(xù)編譯的目的。

總結(jié)

這次針對 GOPATH 模式和 Module 模式的探討和推進(jìn),仍然是由 Go 核心團(tuán)隊(duì)負(fù)責(zé)人 rsc 負(fù)責(zé)發(fā)起。最終的結(jié)論是 GOPATH 模式這種歷史債務(wù)甩不掉,還是有人必須要使用的。但是我們也不能完全不管他。

答案是既要也要還要。所以對 GOPATH 模式和 Module 模式同時做了一些小處理,避免造成過大的沖突。最終結(jié)論是:無限期保留基本 GOPATH 模式的支持。此項(xiàng)變更在 Go1.22 時已經(jīng)生效!

責(zé)任編輯:武曉燕 來源: 腦子進(jìn)煎魚了
相關(guān)推薦

2025-02-11 09:01:57

2025-07-29 10:00:02

2023-06-30 08:23:36

Spring!SolonJavalin

2024-05-07 08:46:06

GoGoogle云原生

2023-01-11 07:20:27

編程能力人工智能

2018-07-31 15:38:07

SDN物聯(lián)網(wǎng)IIoT

2023-10-23 19:58:01

Android

2022-06-15 09:26:43

Perl編程語言

2023-07-10 10:21:21

JavaScript模塊化規(guī)范

2021-09-01 10:50:21

int main()return 0語言

2020-04-28 08:10:42

編程Resflux應(yīng)用

2021-07-06 07:27:44

函數(shù)Return編譯器

2013-08-20 09:48:59

2022-07-21 13:36:39

API事件驅(qū)動Rest

2021-05-20 10:14:50

數(shù)字人民幣ATM銀行

2020-05-11 17:08:28

蘋果WindowsMacBook

2024-10-14 09:58:06

并發(fā)編程共享

2017-08-09 09:05:00

旅游智慧

2021-11-05 10:59:06

元編程語言工具

2018-08-07 09:38:06

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號