歡迎您光臨本站 註冊首頁

Go 泛型草案更新,明年8月釋出的 Go 1.17 將引入

←手機掃碼閱讀     admin @ 2020-06-18 , reply:0

Go 團隊近日在部落格介紹了 Go 泛型的最新進展。

Go 團隊表示他們一直在完善泛型的設計草案,併為此編寫了一個型別檢查器——可按照設計草案中的說明,解析使用泛型的 Go 程式碼並報告任何型別的錯誤。為了收集社群的反饋,他們還編寫了示例程式碼並在草案中提供。

根據收集的反饋和了解的資訊,Go 團隊釋出了更新後的泛型設計草案

"The design is fully backward compatible with Go 1",完全相容 Go 1

新版草案最大的變化是放棄了關於 contracts 的想法。因為團隊認為 contracts 和 interface 型別之間的區別會令人感到困擾,所以他們正在消除這種區別。型別引數現在受 interface 型別約束,當 interface 型別僅作為約束(constraints)使用時,可被允許包含型別列表。在舊版的設計草案中,型別列表屬於 contracts 的功能。更復雜的情況將使用引數化的 interface 型別.

為了幫助決定如何進一步完善設計草案,團隊還發布了翻譯工具。此工具可用於型別檢查,以及執行使用設計草案中描述的泛型版本編寫的程式碼。它透過將泛型程式碼翻譯為普通的 Go 程式碼來工作。此翻譯過程有一定的侷限性,不過團隊主要是希望藉此讓大家對 Go 泛型的整體有所瞭解。如果泛型最終被吸納,它們的實際實現可能會有所不同。

此工具已在 Go playground 的變體上提供,這個 playground 的工作方式與常見的 Go playground 相同,不過前者支援泛型程式碼。團隊希望此工具能為 Go 使用者提供嘗試使用泛型的機會,並瞭解兩件主要的事。

首先,Go 泛型是否有意義,能給使用者帶去怎樣的驚喜,錯誤提示訊息是否有價值;其次,很多人曾說過需要 Go 泛型,但他們不一定確切知道這意味著什麼,那麼泛型的設計草案是否以有用的方式解決了此問題。另外,假如有一個問題讓人認為“如果 Go 具有泛型,我就可以解決此問題”,那麼使用此工具是否可以解決問題?

至於具體的推進計劃,Go 團隊表示要根據從社群收集的反饋而定。如果設計草案受到好評,並且不需要進行重大更改,那麼下一步將是正式的語言變更提案

為了保證符合預期,如果每個人都對設計草案完全滿意,並且不需要進行任何進一步的調整,則最早可以在計劃於2021年8月釋出的 Go 1.17 中新增泛型。不過可能存在無法預料的問題,所以這是一個樂觀的時間表,團隊也無法做出任何明確的預測。

詳情檢視 https://blog.golang.org/generics-next-step


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/116519/go-generics-next-step
Go 泛型草案更新,明年8月釋出的 Go 1.17 將引入已經有168次圍觀

http://coctec.com/news/all/show-post-238931.html