Golang引入泛型:Go將Interface{}替換為“Any”
現在 Go 將擁有泛型:Go將Interface{}替換為“Any” ,這是一個型別別名:
type any = interface{}
這會引入了泛型作好準備,實際上,帶有泛型的Go 1.18 Beta 1 已釋出。
Go使用空的介面Interface{}來表示“任何型別”是一種巧妙的方式。空介面可以表示任何型別,因為每種型別都固有地實現了一個沒有方法的介面。這就是 Go 的全部內容——隱式實現介面。
一旦您開始使用泛型,會開始感受到在編寫 `interface{}` 的痛苦,尤其是在您處理這樣的函式時:
func doSomething[X interface{}, Y Fooer[interface{}]](v X, src Y) error { } |
使用any替代`interface{}`後就簡潔:
func doSomething[X any, Y Fooer[any]](v X, src Y) error { } |
之前C++、Java、JavaScript、Python、Ruby、Rust都支援泛型,現在Golang也加入泛型支援。
15年前Java沒有泛型支援時,程式碼是這麼寫的:
List /* <String> */ values; Map /* <String, Object> */ map; |
使用註釋註明集合型別,在Go 既沒有泛型也沒有聯合型別情況下,Go可能會這麼寫:
type fileOps []any // []T where T is (string | int64) |
相關文章
- go interface{}型別轉換Go型別
- Go interface 原理剖析--型別轉換Go型別
- Go 新關鍵字 any,interface{} 會成為歷史嗎?Go
- golang,interface轉換型別 cannot convert t (typGolang型別
- Golang | Go語言多型的實現與interface使用Golang多型
- go-easy-utils 2.0 正式釋出,全面支援泛型和anyGo泛型
- 為什麼 Go 不支援 []T 轉換為 []interfaceGo
- 集合框架-引入泛型框架泛型
- Golang 泛型初探Golang泛型
- Golang面試:泛型Golang面試泛型
- Go 泛型Go泛型
- Go 泛型之泛型約束Go泛型
- go泛型教程Go泛型
- interface{} 型別的轉換型別
- golang拾遺:為什麼我們需要泛型Golang泛型
- 將 dep 更換為 go modGo
- 泛型最佳實踐:Go泛型設計者教你如何用泛型泛型Go
- Go 官方出品泛型教程:如何開始使用泛型Go泛型
- ultraedit中將某字元替換為回車符字元
- 長達 12 年,Go 泛型才引入,是政治,還是技術問題?Go泛型
- C#中將DataTable型別轉化為泛型集合C#型別泛型
- Go泛型基礎使用Go泛型
- Go 1.17 泛型嚐鮮Go泛型
- Java & Go 泛型對比JavaGo泛型
- Golang之interfaceGolang
- 【Golang】Go 通過結構(struct) 實現介面(interface)GolangStruct
- 集合框架-通過Object轉型問題引入泛型框架Object泛型
- 替換空格 將一個字串中的空格替換成“ ”字串
- 將每個元素替換為右側最大元素
- go需要泛型的場景Go泛型
- Go 需要泛型的場景Go泛型
- Golang型別轉換Golang型別
- golang interface淺談Golang
- 將timestamp型別轉換為date型別型別
- mysql型別批量替換工具MySql型別
- 將專案裡的moment替換為day.jsJS
- Golang | 既是介面又是型別,interface是什麼神仙用法?Golang型別
- go 1.18 泛型初體驗Go泛型