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型別
- go-easy-utils 2.0 正式釋出,全面支援泛型和anyGo泛型
- Golang | Go語言多型的實現與interface使用Golang多型
- 為什麼 Go 不支援 []T 轉換為 []interfaceGo
- Golang 泛型初探Golang泛型
- Go 泛型Go泛型
- Go 泛型之泛型約束Go泛型
- Golang面試:泛型Golang面試泛型
- interface{} 型別的轉換型別
- go泛型教程Go泛型
- golang拾遺:為什麼我們需要泛型Golang泛型
- 將 dep 更換為 go modGo
- 泛型最佳實踐:Go泛型設計者教你如何用泛型泛型Go
- 長達 12 年,Go 泛型才引入,是政治,還是技術問題?Go泛型
- Go 官方出品泛型教程:如何開始使用泛型Go泛型
- Golang之interfaceGolang
- 【Golang】Go 通過結構(struct) 實現介面(interface)GolangStruct
- Java & Go 泛型對比JavaGo泛型
- Go泛型基礎使用Go泛型
- Go 1.17 泛型嚐鮮Go泛型
- 將專案裡的moment替換為day.jsJS
- 將每個元素替換為右側最大元素
- go 1.18 泛型初體驗Go泛型
- go需要泛型的場景Go泛型
- Go 需要泛型的場景Go泛型
- postgresql 將jsonb中的資料替換為指定資料SQLJSON
- Golang | 既是介面又是型別,interface是什麼神仙用法?Golang型別
- Go 1.18泛型的侷限性初探Go泛型
- Go Internals: Go 反射 vs Java 泛型 vs cpp 模板Go反射Java泛型
- golang的型別轉換Golang型別
- Go 1.18 泛型全面講解:一篇講清泛型的全部Go泛型
- golang使用sqlx報錯:unsupported type []interface {}, a slice of interfaceGolangSQL
- Golang 字串分割,替換和擷取 strings.SplitGolang字串
- Golang泛型是更快了還是慢了? - DoltHubGolang泛型
- 在Golang中使用泛型reduce函式 - gosamplesGolang泛型函式