新聞中心
這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
快報(bào):正式提案將泛型特性加入Go語(yǔ)言
本文轉(zhuǎn)載自微信公眾號(hào)「腦子進(jìn)煎魚(yú)了」,作者陳煎魚(yú)。轉(zhuǎn)載本文請(qǐng)聯(lián)系腦子進(jìn)煎魚(yú)了公眾號(hào)。

大家好,我是煎魚(yú)。
經(jīng)歷九九八十一難,多年的不斷探討和 Go 語(yǔ)言愛(ài)好者們?cè)谏鐓^(qū)中的強(qiáng)烈關(guān)注,且 Go 官方在 2020 年不斷放出消息。
總算在 2021 年 1 月 12 日,官方正式提出將泛型特性加入 Go 語(yǔ)言的 proposal 了,且最新的草案設(shè)計(jì)已經(jīng)更新。
基本語(yǔ)法如下:
- func Print[T any](s []T) {
- // same as above
- }
其大體的概述如下:
- 函數(shù)可以具有使用方括號(hào)的其他類(lèi)型參數(shù)列表,但其他情況下看起來(lái)像普通的參數(shù)列表:func F[T any](p T) { ... }。
- 類(lèi)型也可以具有類(lèi)型參數(shù)列表:type MySlice[T any] []T。
- 每個(gè)類(lèi)型參數(shù)都有一個(gè)類(lèi)型約束,就像每個(gè)普通參數(shù)都有一個(gè)類(lèi)型:func F[T Constraint](p T) { ... }。
- 類(lèi)型約束是接口類(lèi)型。
- 新的預(yù)聲明名稱(chēng) any 是允許任何類(lèi)型的類(lèi)型約束。
- 用作類(lèi)型約束的接口類(lèi)型可以具有預(yù)先聲明的類(lèi)型的列表。只有與那些類(lèi)型之一匹配的類(lèi)型參數(shù)才能滿(mǎn)足約束條件。
- 泛型函數(shù)只能使用其類(lèi)型約束所允許的操作。
- 使用泛型函數(shù)或類(lèi)型需要傳遞類(lèi)型實(shí)參。
- 在通常情況下,類(lèi)型推斷允許省略函數(shù)調(diào)用的類(lèi)型參數(shù)。
根據(jù)官方博客的消息,如果該提案被正式接受。那么將會(huì)在 2021 年底之前完成一個(gè)基本可用的泛型功能(可能未完全優(yōu)化),又或是會(huì)作為 Go1.18beta 的一部分。
這是 Go 泛型特性的又一步歷史性前進(jìn),這一個(gè)里程碑。若大家有興趣進(jìn)一步了解或想提出意見(jiàn),可查看下述傳送門(mén):
- [A Proposal for Adding Generics to Go]:https://blog.golang.org/generics-proposal。
- [proposal: spec: add generic programming using type parameters]:https://github.com/golang/go/issues/43651。
不知道今年年底或 Go1.18beta 能不能真的看到泛型的正式完整可用版本呢,值得期待!
文章標(biāo)題:快報(bào):正式提案將泛型特性加入Go語(yǔ)言
當(dāng)前地址:http://m.5511xx.com/article/cdhgpig.html


咨詢(xún)
建站咨詢(xún)
