Go官博 正式提案將泛型加入Go 譯

2021-10-14 18:35:49 字數 1298 閱讀 9709

我們已經提交了乙份go語言變更提案[2],以增加對型別和函式的型別引數的支援,支援一種泛型程式設計的正規化。

泛型可以給我們提供一種強大的構件(building block),讓我們更容易地共享**和構建程式。泛型程式設計是指編寫函式和資料結構時,其中的一些型別留待以後指定。例如,你可以編寫乙個對任意資料型別的切片進行操作的函式,而實際的資料型別只有在函式被呼叫時才會被指定。或者,您可以定義乙個儲存任意型別值的資料結構,其中實際要儲存的型別是在您建立資料結構例項時指定的。

自go語言於2023年首次發布以來,對泛型的支援一直是被要求最多要支援的語言特性之一。您可以在之前的一篇博文[3]中閱讀更多有關為什麼泛型是有用的資訊。

雖然泛型有明確的用途,但將它乾淨利落地融入go這樣的語言中是一項艱鉅的任務。早在2023年,就有人嘗試在go語言中新增泛型[4]。在過去的十年裡,還有其他一些嘗試。

在過去的幾年裡,我們一直在進行一系列的設計草案,最終形成了乙個基於型別引數的設計[5]。這個設計草案從go程式設計社群得到了很多的反饋意見,並且很多人使用了之前一篇博文[6]中提到的generics playground[7]進行了真實體驗。ian lance taylor在2023年的gophercon上做了乙個演講[8],講述了為什麼要新增泛型,以及我們現在採取的策略。robert griesemer在gophercon 2020上做了後續演講[9],介紹了泛型設計以及實現方面的變化。語言的變化是完全向後相容的,所以現有的go程式可以像今天一樣繼續工作。我們已經達到了這樣的程度,所以我們認為設計草案已經足夠好,也足夠簡單了,我們可以建議將其新增到go中了。

與所有的語言修改提案一樣,我們的目標是推動達成共識,要麼在語言中新增泛型,要麼放棄該提案。我們明白,對於如此大規模的改變,不可能讓go社群的所有人都滿意,但我們打算達成乙個大家都願意接受的決定。

如果這個提議被接受,我們的目標是在年底前完成乙個完整的,儘管可能還沒有完全優化的實現,供人們試用,也許可以作為go 1.18測試版的一部分。

[1] ian lance taylor: 

[2] 

go語言變更提案: 

[3] 

一篇博文: 

[4] 

有人嘗試在go語言中新增泛型: 

[5] 

乙個基於型別引數的設計: 

[6] 

之前一篇博文: 

[7] 

generics playground: 

[8] 

做了乙個演講: 

[9] 

做了後續演講: 

[10] 

語言變更提案過程: 

[11] 

開啟了這個過程: 

[12] 

正式開博了

今天看了大峽的 讓部落格成為一種習慣 覺得自己也應該寫點什麼東西記錄下自己的學習工作,這樣對自己也有乙個監督作用。最近正在學習flashlite技術,就用這個作名字了。部落格想寫三方面的內容 一是工作相關,現在我在做數碼電視方面的軟體,有四年以上經驗了,會逐漸把這這些年的心得寫下來。二是我的技術興趣...

正式開博啦

首先要小抱怨一下,剛剛我滿心歡喜地敲完第一篇博文,居然由於新增新分類而化為了烏有 csdn blog居然不但沒有跳轉的放棄提示,還沒有自動儲存草稿的功能!莫非我才剛用,還不知道 總之,這實在是讓我相當不爽啊 那剛才說的那些我也記不全了,就不將其還原好啦 總之就是我非常非常非常非常非常非常非常非常非常...

博應用官網結構分析

是由很多網頁組成的,通過不同網頁板塊的結合而緊密聯絡為一體,有好的 結構分布才能讓使用者有更好的使用體驗,同時增加網際網路友好度,那麼下面給大家介紹下博應用官網 架構 1 寬屏與窄屏的顯示 其實對於 寬窄屏顯示的設定眾說紛紜,有的人說寬屏好有的人說窄屏好,其實寬窄屏顯示各有優勢,窄屏顯示 即 居中,...