掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
大家好,我是煎魚。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、城關(guān)網(wǎng)站維護(hù)、網(wǎng)站推廣。
本周末在學(xué)習(xí)的時(shí)候,看到 Go 團(tuán)隊(duì)大當(dāng)家 Russ Cox(下稱:rsc)在近期分享的《GopherCon 2022: Russ Cox - Compatibility: How Go Programs Keep Working[1]》,講的是 Go 在兼容性方面的現(xiàn)有問題和思考,還埋了個(gè)新預(yù)期。
如下圖:
他提出了一個(gè)新的 Slogan:“Go is boring, and that's good.(Go 很無聊,這很好)”,原因在于無聊代表穩(wěn)定的。無聊意味著你能夠?qū)W⒂谀愕墓ぷ?,而不是我們的工作?/p>
核心來講,Go 團(tuán)隊(duì)希望 Go 足夠簡(jiǎn)潔,Gopher 不要整天卷 Go 的各種奇思妙計(jì),要把精力都關(guān)注到自己的工作上,不要關(guān)注他們。
我一開始聽起來多少有點(diǎn)道理和自己的想法,聽著聽著這個(gè)車就剎不住了。
在最后的最后,rsc 冷不丁的正式官宣:不會(huì)有 Go2 了,會(huì)一直保持 Go1,將會(huì)加倍投入對(duì) Go1 兼容性的建設(shè),這將非常有價(jià)值。
如下圖:
當(dāng)然,他也講了,狹義里的 Go2 可能已經(jīng)發(fā)生了,只是慢慢轉(zhuǎn)為了 Go1 的新特性融入到了 Go 之中。(我很想說,版本號(hào)也還是 Go1,好一個(gè)意識(shí)...)
最重要的,那些沒法兼容的 “新” 東西怎么辦?大方向的大招已經(jīng)在前文《??加大力度!Go 將會(huì)增強(qiáng) Go1 向后兼容性??》有介紹過。
核心之一:使用 Go 工程中的 go.mod 文件內(nèi)的 go 版本號(hào)來控制編譯的選擇,決定各個(gè)庫在不同 Go 版本下以不同的表現(xiàn)來應(yīng)用其特性,將會(huì)影響編譯時(shí)的決定。
如下圖:
在上述說明中,主模塊、模塊 A、模塊 B,分別根據(jù) go.mod 內(nèi)的 go 版本號(hào),應(yīng)用到了不同的可用特性(有的可以用泛型,有的不可以用帶下劃線的數(shù)字,有的都不能用等)。
這本質(zhì)是結(jié)合 Go modules 原本的依賴管理邏輯,再復(fù)用 go.mod 的 go 版本號(hào)給不同版本的不同特性來做好編譯的控制邏輯。
未來將不會(huì)有 Go2,都會(huì)是 Go1.x。
已經(jīng)找到能往里各種塞的姿勢(shì)了。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流