可能有人會覺得Go泛型很難,因此想要借鑒其他語言(比如Java、NodeJS)的泛型實踐。事實上Go泛型很容易學,本文希望能幫助讀者更好的理解Go泛型。
注:本文不會將 Go 泛型與其他語言的泛型實現進行比較,但會幫助你理解 Go 泛型元素背后的上下文、結構及其原理。
要編寫本文中的示例代碼,需要:
在 2020 年之前,Go泛型既是風險也是機遇。
當 Go 泛型在 2009 年左右被首次提出時(當時該編程語言已經公開),該特性是 Go 語言的主要弱點之一(Go 團隊調查發現)。
此后,Go 團隊在 Go 草案設計中接受了許多泛型實現,并在 Go 1.18 版本[2]中首次引入了泛型。
Go 博客 2020 調查結果
Go 2020 調查顯示,自 Go 語言誕生以來,Go 社區一直要求引入泛型功能。
Go 開發人員(以及 Go 團隊成員)看到這一缺陷阻礙了 Go 語言的發展,同時,如果得到修復,Go將具有更大的靈活性和性能。
根據維基百科[3]的解釋,泛型編程是一種計算機編程風格,在這種編程風格中,算法的具體類型可以在以后指定。
簡單解釋一下:泛型是一種可以與多種類型結合使用的類型,泛型函數是一種可以與多種類型結合使用的函數。
?? 簡單提一下:盡管"泛型"在過去和現在都可以通過 interface{}、反射包或代碼生成器在 Go 中實現,但還是要提一下在使用這三種方法之前需要仔細考慮。
為了幫助我們以實用的方式理解和學習 Go 泛型,我們將在本文稍后部分提供示例代碼。
但要知道,既然 Go 泛型已經可用,就可以消除模板代碼,不必擔心向后兼容問題,同時還能編寫可重用、類型安全和可維護的代碼。
簡而言之,最多可提高 20% 性能。
根據 Go 博客的描述,Go 泛型為 Go 語言增加了三個主要組件:
從技術上講,早在 Go 泛型發布之前,Go 就有一些處理"泛型"的方法:
然而,與正式的Go泛型相比,這些方法還遠遠不夠,有如下缺點:
本文鏈接:http://www.tebozhan.com/showinfo-26-94852-0.html十分鐘了解 Golang 泛型
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
下一篇: 如何應對Spring框架有三個主要陷阱