我們已經提交了乙份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 寬屏與窄屏的顯示 其實對於 寬窄屏顯示的設定眾說紛紜,有的人說寬屏好有的人說窄屏好,其實寬窄屏顯示各有優勢,窄屏顯示 即 居中,...