RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Go 1.18 版本新功能解讀

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 作者:馬哥Linux運(yùn)維 ? 2022-09-15 09:45 ? 次閱讀

9 月 8 日,Go 語(yǔ)言社區(qū)發(fā)布 2022 年第二季度開(kāi)發(fā)者調(diào)查報(bào)告,本次調(diào)研覆蓋 5752 位受訪開(kāi)發(fā)者,主題涉及他們?cè)谑褂?Go 1.18 全新功能特性(包括泛型、安全工具和工作區(qū))時(shí)的真實(shí)感受,以下是本次報(bào)告的重要內(nèi)容。

泛型已經(jīng)得到迅速接納。大多數(shù)受訪者都知道 Go 1.18 版本中引入了泛型,約四分之一受訪者稱(chēng)已經(jīng)在實(shí)際代碼中使用泛型。大多數(shù)開(kāi)發(fā)者對(duì)泛型的發(fā)布贊賞有加,但也有部分受訪者發(fā)現(xiàn)目前的泛型設(shè)計(jì)限制太多。

Fuzzing 對(duì)大多數(shù) Go 開(kāi)發(fā)者來(lái)說(shuō)仍是新鮮事物。Go 新版本內(nèi)置的模糊測(cè)試在知名度上遠(yuǎn)遠(yuǎn)不及泛型,受訪者也不確定為什么或者何時(shí)需要使用模糊測(cè)試。

第三方依賴項(xiàng)成為最重要的安全問(wèn)題。目前,受訪者稱(chēng)如何避免包含已知漏洞的依賴項(xiàng)成為安全工作中的最大挑戰(zhàn)??傮w而言,安全工作往往缺乏計(jì)劃、也沒(méi)有明確的回報(bào),所以工具開(kāi)發(fā)者應(yīng)當(dāng)盡可能自審自查,幫助開(kāi)發(fā)者節(jié)約時(shí)間和精力。

我們的新功能發(fā)布工作還可以做得更好。關(guān)注 Go 官方博客的開(kāi)發(fā)者一般對(duì)新版本的變化比較熟悉,但隨機(jī)抽樣的受訪者則不太了解最新版本的情況。因此我們要么應(yīng)該在博文以外再開(kāi)拓新的 Go 生態(tài)消息渠道,要么更努力地廣泛分享博文內(nèi)容。

錯(cuò)誤處理仍是個(gè)難題。隨著泛型的發(fā)布,受訪者在使用 Go 時(shí)面臨的最大難題變成了如何處理錯(cuò)誤??傮w來(lái)看,大家對(duì) Go 語(yǔ)言的滿意度仍然很高,我們發(fā)現(xiàn)受訪者使用 Go 語(yǔ)言的方式并沒(méi)有明顯變化。

調(diào)查結(jié)果解讀

在本文中,我們將通過(guò)一系列圖表來(lái)解讀此番調(diào)查。所有圖表均采用相同格式,標(biāo)題部分是向受訪者們提出的具體問(wèn)題。除非另有說(shuō)明,否則各問(wèn)題均為單選形式,受訪者只能選擇其一。圖表的副標(biāo)題部分,會(huì)標(biāo)注是否為多選問(wèn)題或開(kāi)放性問(wèn)題。

對(duì)于開(kāi)放性問(wèn)題,Go 團(tuán)隊(duì)成員認(rèn)真閱讀并手動(dòng)整理了受訪者們的意見(jiàn)。大家對(duì)于這類(lèi)問(wèn)題的回應(yīng)多種多樣,因此我們挑選了最具共性的前十大主題,其余主題則被歸類(lèi)為“其他”。

為了幫助大家了解每條結(jié)論的證據(jù)權(quán)重,我們使用誤差線來(lái)表示響應(yīng)意見(jiàn)的 95% 置信區(qū)間:條形較窄,則表示信心越強(qiáng)。有時(shí),可能有多條響應(yīng)意見(jiàn)的誤差線彼此重疊,意味著這些響應(yīng)的相對(duì)順序并不具備統(tǒng)計(jì)學(xué)意義(或者說(shuō)這些意見(jiàn)之間相互綁定)。各圖表的右下角為圖表中受訪者者人數(shù),形式為“n= 受訪者人數(shù)”。

泛型

支持類(lèi)型參數(shù)(即泛型)的 Go 1.18 發(fā)布之后,我們希望大家如何看待和采用這項(xiàng)新功能,并確定使用泛型時(shí)的常見(jiàn)挑戰(zhàn)或障礙。

絕大多數(shù)受訪者(86%)都知道 Go 1.18 版本引入了泛型。雖然我們預(yù)計(jì)這個(gè)比例會(huì)超過(guò)一半,但沒(méi)想到有這么高。我們還發(fā)現(xiàn),約四分之一受訪者已經(jīng)開(kāi)始在 Go 代碼中使用泛型(26%),其中 14% 表示是在生產(chǎn)或已發(fā)布的代碼中使用。大多數(shù)受訪者(54%)并不抵觸泛型,只是目前還沒(méi)開(kāi)始使用。** 另有 8% 的受訪者有意在 Go 中使用泛型,但出于種種原因而暫未行動(dòng)。

09115814-3433-11ed-ba43-dac502259ad0.png

093c538e-3433-11ed-ba43-dac502259ad0.png

是什么阻止了一些開(kāi)發(fā)人員使用泛型?困擾大多數(shù)受訪者的其實(shí)就兩個(gè)理由:首先,30% 的受訪者表示他們發(fā)現(xiàn)現(xiàn)有泛型實(shí)現(xiàn)仍有諸多限制,例如不支持參數(shù)化方法、類(lèi)型推斷和類(lèi)型切換等。受訪者表示,這些問(wèn)題限制了泛型的可用空間,或者導(dǎo)致泛型代碼過(guò)于冗長(zhǎng)。

第二個(gè)理由則是某些依賴項(xiàng)尚不支持泛型——其中最典型的例子是 linter,此外還有仍在使用的早期 Go 版本,或者尚不提供 Go 1.18 包(26%)的 Linux 發(fā)行版等。12% 的受訪者則是因?yàn)閷W(xué)習(xí)曲線陡峭或說(shuō)明文檔不充分而選擇放棄。

除了這些重要因素,受訪者還反饋了一些相對(duì)不太常見(jiàn)、但仍有意見(jiàn)的阻礙,如下圖所示。這里,我們僅列出已經(jīng)在使用泛型,或者曾嘗試使用泛型但未能成功的受訪者。

094bf2e4-3433-11ed-ba43-dac502259ad0.png

我們還詢問(wèn)了嘗試用過(guò)泛型的受訪者,希望了解他們的感受。令人振奮的是,10% 的受訪者表示泛型確實(shí)簡(jiǎn)化了自己的代碼、降低了代碼重復(fù)度。除了高度贊賞之外,其他受訪者也普遍(43%)對(duì)泛型給予積極評(píng)價(jià);相比之下,只有 6% 的受訪者對(duì)泛型表達(dá)了負(fù)面評(píng)價(jià)或感受。

與之前提到的使用挑戰(zhàn)相似,近三分之一受訪者表示 Go 的泛型實(shí)現(xiàn)限制太多。


Go 團(tuán)隊(duì)正參考這些結(jié)果,研究是否或如何放寬這些限制。

096058ba-3433-11ed-ba43-dac502259ad0.png ? 安全性

經(jīng)歷了 2020 年的 SolarWinds 漏洞之后,安全軟件開(kāi)發(fā)實(shí)踐再次受到關(guān)注。Go 團(tuán)隊(duì)也在優(yōu)先考慮安全保障問(wèn)題,包括建立軟件物料清單(SBOM)的配套工具、模糊測(cè)試以及最近推出的漏洞掃描。為了達(dá)成目標(biāo),本次調(diào)查特別詢問(wèn)了關(guān)于軟件開(kāi)發(fā)安全實(shí)踐和挑戰(zhàn)的問(wèn)題,特別是:

Go 開(kāi)發(fā)者目前在使用哪些類(lèi)型的安全工具?

Go 開(kāi)發(fā)者如何發(fā)現(xiàn)和解決漏洞?

要編寫(xiě)出安全的 Go 軟件,最大的挑戰(zhàn)是什么?

調(diào)查結(jié)果表明,雖然靜態(tài)分析工具得到了廣泛應(yīng)用(65%),但只有少數(shù)受訪者在使用這些工具發(fā)現(xiàn)漏洞(35%),或者以其他方式提高代碼安全性(33%)。受訪者們表示,安全工具主要運(yùn)行在 CI/CD 過(guò)程(84%),只有少數(shù)開(kāi)發(fā)者會(huì)在開(kāi)發(fā)期間運(yùn)行這些工具(22%)。

這與我們團(tuán)隊(duì)進(jìn)行的其他安全研究一致,即安全掃描大多集中在 CI/CD 期間,而這時(shí)才關(guān)注安全問(wèn)題其實(shí)為時(shí)已晚。更理想的方法,應(yīng)該是在構(gòu)建之前就知曉依賴項(xiàng)是否存在漏洞、驗(yàn)證版本更新是否解決了這些漏洞。等到 CI 針對(duì) PR 運(yùn)行完整測(cè)試時(shí),隱患往往已經(jīng)難以剔除。

09722126-3433-11ed-ba43-dac502259ad0.png

099564e2-3433-11ed-ba43-dac502259ad0.png

我們還向受訪者詢問(wèn)了他們?cè)诎踩_(kāi)發(fā)軟件時(shí)的最大挑戰(zhàn)。目前最常見(jiàn)的難題是如何評(píng)估第三方庫(kù)的安全性(57%), 其實(shí)主題漏洞掃描器(例如 GitHub 的 dependabot 或者 Go 團(tuán)隊(duì)的 govulncheck)就能很好地完成任務(wù)。


其他反饋意見(jiàn)則為新工具提供了發(fā)展空間:受訪者們表示,他們?cè)诰帉?xiě)代碼并驗(yàn)證成果是否存在漏洞時(shí),往往很難全流程遵循最佳實(shí)踐。

09a4ce14-3433-11ed-ba43-dac502259ad0.png

模糊測(cè)試是提高應(yīng)用程序安全性的另一種好辦法,但大多數(shù)受訪者似乎對(duì)此還不熟悉。只有 12% 的受訪者在實(shí)際工作中用過(guò)模糊測(cè)試,5% 的受訪者稱(chēng)已經(jīng)在使用 Go 內(nèi)置模糊測(cè)試工具。

在“為什么會(huì)感覺(jué)模糊測(cè)試難以使用”的開(kāi)放性問(wèn)題中,我們發(fā)現(xiàn)影響最大的并非技術(shù)因素:占比最高的三個(gè)答案分別是“不了解如何使用模糊測(cè)試”(23%)、“沒(méi)時(shí)間進(jìn)行模糊測(cè)試或者其他安全保障工作”(22%)、“沒(méi)法以符合預(yù)期的方式和時(shí)間進(jìn)行模糊測(cè)試”(14%)。

這些發(fā)現(xiàn)表明,我們還需要投入精力幫助開(kāi)發(fā)者了解模糊測(cè)試的價(jià)值、模糊測(cè)試要測(cè)什么,以及如何把它應(yīng)用在不同的代碼庫(kù)當(dāng)中。

09d2021c-3433-11ed-ba43-dac502259ad0.png

09e91f92-3433-11ed-ba43-dac502259ad0.png

為了更好地了解大家如何檢測(cè)漏洞、解決常見(jiàn)安全任務(wù),我們?cè)儐?wèn)受訪者在過(guò)去一年中是否發(fā)現(xiàn)過(guò)自己的 Go 代碼或依賴項(xiàng)中存在漏洞。對(duì)于給出肯定答案的受訪者,我們又進(jìn)一步提出問(wèn)題,例如當(dāng)時(shí)是怎么發(fā)現(xiàn)漏洞的、如何調(diào)查及 / 或解決,以及整個(gè)過(guò)程中哪些環(huán)節(jié)最為棘手。

首先,我們發(fā)現(xiàn)漏洞掃描確有成效。四分之一的受訪者表示從第三方依賴項(xiàng)中發(fā)現(xiàn)了漏洞。但實(shí)際使用漏洞掃描的受訪者只占三分之一,所以在這部分群體中再統(tǒng)計(jì)依賴項(xiàng)漏洞比例時(shí),我們發(fā)現(xiàn)結(jié)果從 25% 倍增至 46%。除了依賴項(xiàng)和 Go 自身的漏洞外,有 12% 的受訪者表示發(fā)現(xiàn)的是自己代碼中的漏洞。

大多數(shù)受訪者(65%)表示,他們發(fā)現(xiàn)的漏洞源自安全掃描程序。受訪者最常用的工具是 GitHub 的 dependabot(38%),使用比例高于所有其他漏洞掃描程序的總和(27%)。除掃描之外,受訪者了解漏洞的其他常見(jiàn)方式還包括公共報(bào)告,例如發(fā)布說(shuō)明和 CVE(22%)。

09f87258-3433-11ed-ba43-dac502259ad0.png

0a0e38f4-3433-11ed-ba43-dac502259ad0.png

在意識(shí)到存在漏洞后,受訪者們最常見(jiàn)的解決方法(67%)是升級(jí)相應(yīng)依賴項(xiàng)。在使用漏洞掃描程序(專(zhuān)門(mén)用于檢測(cè)第三方依賴項(xiàng)中漏洞)的受訪者中,選擇升級(jí)依賴項(xiàng)的比例則上升至 85%。近三分之一的受訪者會(huì)閱讀 CVE 或漏洞報(bào)告(31%),只有 12% 的受訪者會(huì)進(jìn)一步做深入調(diào)查,了解自己的軟件是否受到影響、受到怎樣的影響。

只有 12% 的受訪者表示會(huì)對(duì)代碼漏洞造成的潛在影響做進(jìn)一步調(diào)查,這樣的比例確實(shí)低得令人吃驚。為了掌握更多細(xì)節(jié),我們還詢問(wèn)受訪者在應(yīng)對(duì)漏洞方面遇到過(guò)哪些挑戰(zhàn)。幾個(gè)主要答案的占比基本相當(dāng),包括害怕依賴項(xiàng)更新會(huì)影響代碼執(zhí)行,以及通過(guò) go.mod 文件更新間接依賴項(xiàng)的難度較高等。

我們也詢問(wèn)了一般使用哪種調(diào)查方式了解漏洞影響或探究根本原因,這 12% 愿意做進(jìn)一步調(diào)查的受訪者們給出了更積極的答案:其中 70% 對(duì)漏洞的潛在影響進(jìn)行了調(diào)查,并發(fā)現(xiàn)這才是整個(gè)過(guò)程中最困難的部分。

除了調(diào)查本身的難度,他們還提到這項(xiàng)工作通常不在項(xiàng)目計(jì)劃之內(nèi),而且完全沒(méi)有直接回報(bào)。

Go 團(tuán)隊(duì)認(rèn)為,這種深入調(diào)查應(yīng)用程序中各依賴項(xiàng)安全態(tài)勢(shì)的好習(xí)慣,將直接決定漏洞可能給組織帶來(lái)的實(shí)際風(fēng)險(xiǎn)、甚至是否發(fā)生數(shù)據(jù)泄露。

因此,我們?cè)O(shè)計(jì)出 govulncheck,在調(diào)用的函數(shù)中存在漏洞時(shí)向開(kāi)發(fā)者發(fā)出提醒,并列出該函數(shù)在代碼中的確切位置。希望這款工具能幫助開(kāi)發(fā)者快速對(duì)應(yīng)用程序中的致命漏洞進(jìn)行調(diào)查,減少計(jì)劃外的安全工作負(fù)擔(dān)。

0a1b327a-3433-11ed-ba43-dac502259ad0.png

0a2a825c-3433-11ed-ba43-dac502259ad0.png

工具體驗(yàn)

下面,我們又詢問(wèn)了關(guān)于工具體驗(yàn)的問(wèn)題:

自上次調(diào)查以來(lái),編輯環(huán)境是否發(fā)生了變化?

開(kāi)發(fā)者愿意使用工作區(qū)嗎?如果愿意,在初上手時(shí)感覺(jué)有哪些不便?

開(kāi)發(fā)者如何處理內(nèi)部包文檔?

VS Code 在受訪者中的人氣似乎還在持續(xù)增長(zhǎng)。自 2021 年以來(lái),受訪者就將其選為最受歡迎的 GO 代碼編輯器,今年的支持比例更是從 42% 上升至 45%。VS Code 和 GoLand 兩大高人氣編輯器似乎不受組織規(guī)模的影響,在大企業(yè)和小公司里都很受歡迎。但從統(tǒng)計(jì)結(jié)果來(lái)看,業(yè)余開(kāi)發(fā)者似乎更偏愛(ài) VS Code。

在 2021 年通過(guò) gopls 語(yǔ)言服務(wù)器強(qiáng)化 VS Code 的 Go 支持能力之后,Go 團(tuán)隊(duì)一直想了解 gopls 中存在哪些使用痛點(diǎn)。雖然我們已經(jīng)從開(kāi)發(fā)者那邊收到了不少反饋,但不清楚會(huì)不會(huì)有很多開(kāi)發(fā)者直接禁用掉了這項(xiàng)功能。

為了收集關(guān)于 gopls 的負(fù)面意見(jiàn),我們專(zhuān)門(mén)統(tǒng)計(jì)了那些所使用的編輯器能夠支持 gopls 的受訪者(無(wú)論他們是否實(shí)際使用 gopls),并發(fā)現(xiàn)禁用比例只有 2%。而且在 VS Code 上,禁用比例更是下降至 1%。這讓我們對(duì) gopls 的表現(xiàn)更具信心,也期待大家在 GitHub 上提交更多關(guān)于 gopls 的問(wèn)題。

0a3c398e-3433-11ed-ba43-dac502259ad0.png

0a4dfa98-3433-11ed-ba43-dac502259ad0.png

在工作區(qū)這邊,很多受訪者似乎是在本次調(diào)查中才知道 Go 能夠支持多模塊工作區(qū)。對(duì) VS Code 用戶的隨機(jī)調(diào)查顯示,大多數(shù)受訪者從來(lái)就沒(méi)聽(tīng)說(shuō)過(guò)工作區(qū)(在隨機(jī)抽樣受訪者中占比 53%,在自薦受訪者中占比 33%)。

其實(shí)對(duì)泛型的認(rèn)知和接納差異在這兩個(gè)受訪者群體間也體現(xiàn)得非常明顯,分別為 93% 和 68%。也許是因?yàn)槲覀兡壳暗?Go 博客或社交媒體渠道還不足以涵蓋足夠的 Go 開(kāi)發(fā)者,所以很多新功能并不能有效傳遞至用戶耳中。

我們還發(fā)現(xiàn),有 9% 的受訪者曾經(jīng)試用過(guò)工作區(qū),另有 5% 表示想要嘗試但最終未能進(jìn)行。關(guān)于使用 Go 工作區(qū)的阻礙,位居榜首的是 go work 命令缺乏說(shuō)明文檔和有意義的錯(cuò)誤消息(21%),其次則是要求重構(gòu)現(xiàn)有 repo(13%)。

與安全部分的討論類(lèi)似,同樣有不少受訪者給出了“沒(méi)時(shí)間 / 不是優(yōu)先事項(xiàng)”之類(lèi)的理由。按照我們的理解,這意味著跟實(shí)際帶來(lái)的收益相比,工作區(qū)的理解和設(shè)置門(mén)檻仍然偏高,也可能是開(kāi)發(fā)者之前就已經(jīng)找到了自己的解決辦法。

0a70a3b8-3433-11ed-ba43-dac502259ad0.png

0a8a37a6-3433-11ed-ba43-dac502259ad0.png

在 Go 模塊發(fā)布之前,不少組織已經(jīng)在通過(guò)內(nèi)部文檔服務(wù)器(例如支持 godoc.org 的服務(wù)器)為員工提供內(nèi)部 Go 包文檔。但現(xiàn)在,這類(lèi)服務(wù)器的設(shè)置流程比以往更為復(fù)雜,我們也在考慮要不要投資來(lái)簡(jiǎn)化這個(gè)過(guò)程。因此,我們?cè)儐?wèn)受訪者如何查看內(nèi)部 Go 模塊文檔,想了解這是不是他們的首選工作方式。

結(jié)果顯示,目前最常見(jiàn)的內(nèi)部 Go 文檔查看方式是閱讀代碼(81%),其中約半數(shù)覺(jué)得這樣就挺好,但也有 39% 認(rèn)為能有內(nèi)部文檔服務(wù)器就更好了。

我們還詢問(wèn)了這類(lèi)服務(wù)器應(yīng)該由誰(shuí)配置和維護(hù),有三分之二的受訪者認(rèn)為應(yīng)該是軟件工程師,余下三分之一覺(jué)得可以指派專(zhuān)門(mén)的 IT 支持或運(yùn)營(yíng)人員。

從這個(gè)角度看,理想的文檔服務(wù)器應(yīng)該是那種交鑰匙解決方案,或者至少不會(huì)帶來(lái)過(guò)多的額外工作負(fù)擔(dān)(一個(gè)人在午休時(shí)間就能維護(hù)好)??紤]到目前開(kāi)發(fā)人才嚴(yán)重短缺的現(xiàn)實(shí),這樣的要求完全在情理之中。

0a984b70-3433-11ed-ba43-dac502259ad0.png

0aa2057a-3433-11ed-ba43-dac502259ad0.png

0ab6345a-3433-11ed-ba43-dac502259ad0.png

調(diào)查對(duì)象

總體而言,自 2021 年的調(diào)查以來(lái),受訪者群體的基本特征并沒(méi)有太大變化。部分受訪者(53%)擁有兩年及以上 Go 使用經(jīng)驗(yàn),其余受訪者則是 Go 社區(qū)中的新人。

約三分之一受訪者來(lái)自小型企業(yè)(員工少于 100 人),四分之一來(lái)自中型企業(yè)(100 至 1000 名員工),四分之一來(lái)自大型企業(yè)(員工超過(guò) 1000 人)。與去年類(lèi)似,我們發(fā)現(xiàn) VS Code 上的調(diào)查彈窗吸引到了不少北美和歐洲以外地區(qū)的開(kāi)發(fā)者。

0ac86710-3433-11ed-ba43-dac502259ad0.png

0ad6825a-3433-11ed-ba43-dac502259ad0.png

0af7cea6-3433-11ed-ba43-dac502259ad0.png

受訪者們?nèi)绾问褂?Go 語(yǔ)言

受訪者使用 Go 語(yǔ)言的具體方式跟上年相比,同樣沒(méi)有出現(xiàn)什么統(tǒng)計(jì)意義上的差異。最常見(jiàn)的兩大用例仍然是構(gòu)建 API/RPC 服務(wù)(73%)和編寫(xiě) CLI(60%)。

我們使用線性模型,嘗試調(diào)查受訪者使用 Go 的時(shí)間與他們的開(kāi)發(fā)方向之間是否存在關(guān)聯(lián)。我們發(fā)現(xiàn),Go 經(jīng)驗(yàn)不足一年的受訪者一般更關(guān)注 GUI、物聯(lián)網(wǎng)、游戲、機(jī)器學(xué)習(xí) /AI 或移動(dòng)應(yīng)用等開(kāi)發(fā)目標(biāo)。而一年以上受訪者則明顯較少用 Go 語(yǔ)言進(jìn)行這些領(lǐng)域的開(kāi)發(fā),說(shuō)明他們可能是在實(shí)踐當(dāng)中遇到了重大障礙。

大多數(shù)受訪者會(huì)在 Linux(59%)或 macOS(52%)上進(jìn)行 Go 開(kāi)發(fā),而部署目的地則絕大多數(shù)是 Linux 系統(tǒng)(93%)。在本次調(diào)查中,我們新增了在 Windows Subsystem for Linux(WSL)上進(jìn)行 Go 開(kāi)發(fā)的選項(xiàng),并發(fā)現(xiàn)有 13% 的受訪者選擇了這種方式。

感受與挑戰(zhàn)

最后,我們?cè)儐?wèn)了受訪者過(guò)去一年來(lái)對(duì) Go 的總體使用感受,特別是使用 Go 時(shí)遇到過(guò)的最大挑戰(zhàn)。我們發(fā)現(xiàn),93% 的受訪者表示“還行”(30%)或非常滿意(63%),基本與 2021 年調(diào)查得到的 92% 持平。

多年以來(lái),泛型一直是 Go 開(kāi)發(fā)中的爭(zhēng)議焦點(diǎn)。Go 1.18 對(duì)類(lèi)型參數(shù)的支持雖然緩和了舊矛盾,但又帶來(lái)了錯(cuò)誤處理這個(gè)新問(wèn)題??梢钥隙ǖ氖?,錯(cuò)誤處理不是孤立存在的,與庫(kù)缺失或不夠成熟、開(kāi)發(fā)者學(xué)習(xí)難度大、最佳實(shí)踐不易實(shí)施、對(duì)類(lèi)型系統(tǒng)的其他修訂(例如支持枚舉及更多函數(shù)式編程語(yǔ)法)等其他問(wèn)題密切相關(guān)??傊?,除了泛型之外,Go 開(kāi)發(fā)者還需要面對(duì)坎坷的前進(jìn)道路。

0b0bd05e-3433-11ed-ba43-dac502259ad0.png總結(jié)

本次 Go 開(kāi)發(fā)者調(diào)查主要側(cè)重于 Go 1.18 版本中的新功能。我們發(fā)現(xiàn)泛型的普及正在穩(wěn)步推進(jìn),但開(kāi)發(fā)者也遇到了當(dāng)前實(shí)現(xiàn)中的不少限制。模糊測(cè)試和工作區(qū)的普及率仍然有限,但核心并非技術(shù)原因:要想擴(kuò)大受眾,這兩項(xiàng)功能首先需要解決什么時(shí)候用、怎么用的問(wèn)題。

另一個(gè)阻礙則是開(kāi)發(fā)者沒(méi)工夫關(guān)注這些新特性,這一點(diǎn)在安全開(kāi)發(fā)方面也有體現(xiàn)。根據(jù)這些結(jié)論,Go 團(tuán)隊(duì)將確定下一步工作的優(yōu)先級(jí),并影響到未來(lái)的工具設(shè)計(jì)思路。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209322
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4779

    瀏覽量

    68521
  • 開(kāi)發(fā)者
    +關(guān)注

    關(guān)注

    1

    文章

    563

    瀏覽量

    17005

原文標(biāo)題:你信嗎?Go 泛型竟然已經(jīng)被迅速采用

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    原創(chuàng)Altium Designer 17全程安裝及新功能視頻教程

    本帖最后由 ぃZhenyuっ 于 2016-12-14 15:07 編輯 期待許久,Altium終于發(fā)布了最新版本的Altium Designer17 ,伴隨著發(fā)布推出了許多新功能,在此 我們
    發(fā)表于 11-20 21:11

    Cadence/OrCAD PSpice 16.6新功能介紹

    介紹了版本16.6的新功能。主要有:learning pspice等
    發(fā)表于 07-02 11:33

    Android9有哪些新功能

    了一些新功能來(lái)持續(xù)改進(jìn)設(shè)備電源管理,以確保將系統(tǒng)資源提供給最需要它們的應(yīng)用.近幾個(gè)android版本中電量?jī)?yōu)化功能:Android 5.0 Lol...
    發(fā)表于 12-28 08:08

    IE8三大可靠性新功能解

    IE8三大可靠性新功能解析 微軟IE項(xiàng)目經(jīng)理Andy Zeigler今天通過(guò)官方博客探討了新版IE8的三個(gè)可靠性新功能:松散耦合式IE(LCIE)、自動(dòng)崩潰恢復(fù)、
    發(fā)表于 08-02 09:09 ?611次閱讀
    IE8三大可靠性<b class='flag-5'>新功能解</b>析

    MD機(jī)功能解讀

    MD機(jī)功能解讀 部分囊中羞澀的發(fā)燒友經(jīng)過(guò)一段時(shí)間的省吃儉用后,終于把新世紀(jì)的錄音新貴——MD隨身聽(tīng)迎回家中。但頭痛的事情亦隨即產(chǎn)
    發(fā)表于 03-19 14:16 ?2984次閱讀

    Go開(kāi)發(fā)團(tuán)隊(duì)正式宣布推出Go 1.11版本

    至少約為2 MB,或壓縮為500 KB。Go程序可以使用新的實(shí)驗(yàn)性syscall/js包調(diào)用JavaScript。二進(jìn)制大小和與其他語(yǔ)言的互操作還不是優(yōu)先級(jí)的,但可能在將來(lái)的版本中解決。
    的頭像 發(fā)表于 08-27 09:03 ?6077次閱讀

    VX.2.3版本新功能介紹

    這30秒的視頻亮點(diǎn)VX.2.3版本新功能墊標(biāo)準(zhǔn)/標(biāo)準(zhǔn)+和墊的專(zhuān)業(yè)。
    的頭像 發(fā)表于 11-06 07:07 ?3342次閱讀

    Linux 5.4內(nèi)核正式版本有哪些新功能

    今天,Linus Torvalds正式簽署了Linux 5.4內(nèi)核的正式版本,帶來(lái)了大量新功能,強(qiáng)化了安全,更新了硬件驅(qū)動(dòng),你值得擁有。
    的頭像 發(fā)表于 11-25 16:31 ?1w次閱讀

    Go語(yǔ)言創(chuàng)始人反對(duì)在Go 1.18的標(biāo)準(zhǔn)庫(kù)中引入泛型支持

    支持,建議不要改動(dòng) Go 1.18 中的標(biāo)準(zhǔn)庫(kù)。 Rob 提出以上建議主要有兩個(gè)依據(jù): 其一,是因?yàn)楦膭?dòng)范圍過(guò)大,可能會(huì)出現(xiàn)差錯(cuò)。Rob 表示,Go 語(yǔ)言 1.18
    的頭像 發(fā)表于 10-26 09:45 ?1877次閱讀
    <b class='flag-5'>Go</b>語(yǔ)言創(chuàng)始人反對(duì)在<b class='flag-5'>Go</b> <b class='flag-5'>1.18</b>的標(biāo)準(zhǔn)庫(kù)中引入泛型支持

    Go 1.18 正式發(fā)布后有哪些特性

    距離 Go 1.17 發(fā)布七個(gè)月后,Go 1.18 正式發(fā)布了!Go 1.18 是一個(gè)包含大量新功能
    的頭像 發(fā)表于 03-30 17:50 ?3083次閱讀

    Go開(kāi)源13周年 2022發(fā)布更多改變的Go 1.18Go 1.19版本

    Go 來(lái)說(shuō),2022 是非常重要的一年,這一年??Go?發(fā)布了?Go 1.18?和?Go 1.19?
    的頭像 發(fā)表于 11-17 16:37 ?1230次閱讀

    SOLIDWORKS 2023新功能揭秘!SOLIDWORKS Simulation 2023版本

    SOLIDWORKS 2023新功能揭秘!SOLIDWORKS Simulation 2023版本
    的頭像 發(fā)表于 12-08 17:53 ?3177次閱讀
    SOLIDWORKS 2023<b class='flag-5'>新功能</b>揭秘!SOLIDWORKS Simulation 2023<b class='flag-5'>版本</b>

    微電阻計(jì)功能解讀

    微電阻計(jì)功能解讀 微電阻計(jì)是一種測(cè)量電阻的儀器,它可以將電阻值轉(zhuǎn)換成電壓或電流進(jìn)行測(cè)量,并能夠進(jìn)行多種測(cè)量、刻度和校準(zhǔn)。微電阻計(jì)主要用于科學(xué)實(shí)驗(yàn)、工業(yè)生產(chǎn)和儀器校準(zhǔn)等領(lǐng)域,是一款非常重要的電子測(cè)試儀
    的頭像 發(fā)表于 08-24 14:25 ?939次閱讀

    代碼靜態(tài)測(cè)試工具 Helix QAC 2024.1版新功能解讀

    Helix QAC 2024.1改進(jìn)了對(duì)C++20和C23語(yǔ)言特性的支持,并增加了分析使用多個(gè)編譯器的項(xiàng)目的新功能。此外,Validate增強(qiáng)了對(duì)于搜索功能和角色權(quán)限的用戶體驗(yàn),并且包括一個(gè)
    的頭像 發(fā)表于 04-25 12:32 ?596次閱讀
    代碼靜態(tài)測(cè)試工具 Helix QAC 2024.1版<b class='flag-5'>新功能解讀</b>

    淺談Xpedition 2409版本新功能

    在《創(chuàng)新不止|Xpedition 2409版本新功能揭秘(上)》一文中,我們了解了Xpedition 2409版本的部分改進(jìn)部分。今天,我們繼續(xù)看Xpedition 2409新版本給我
    的頭像 發(fā)表于 10-31 15:33 ?682次閱讀
    RM新时代网站-首页