【资料图】
funcClip[S~[]E,Eany](sS)SfuncClone[S~[]E,Eany](sS)SfuncCompact[S~[]E,Ecomparable](sS)SfuncCompactFunc[S~[]E,Eany](sS,eqfunc(E,E)bool)SfuncCompare[Econstraints.Ordered](s1,s2[]E)intfuncCompareFunc[E1,E2any](s1[]E1,s2[]E2,cmpfunc(E1,E2)int)int
funcContains[Ecomparable](s[]E,vE)boolfuncContainsFunc[Eany](s[]E,ffunc(E)bool)boolfuncDelete[S~[]E,Eany](sS,i,jint)S
funcEqual[Ecomparable](s1,s2[]E)boolfuncEqualFunc[E1,E2any](s1[]E1,s2[]E2,eqfunc(E1,E2)bool)boolfuncGrow[S~[]E,Eany](sS,nint)S
funcIndex[Ecomparable](s[]E,vE)intfuncIndexFunc[Eany](s[]E,ffunc(E)bool)intfuncInsert[S~[]E,Eany](sS,iint,v...E)SfuncReplace[S~[]E,Eany](sS,i,jint,v...E)S
funcIsSorted[Econstraints.Ordered](x[]E)boolfuncIsSortedFunc[Eany](x[]E,lessfunc(a,bE)bool)boolfuncSort[Econstraints.Ordered](x[]E)funcSortFunc[Eany](x[]E,lessfunc(a,bE)bool)funcSortStableFunc[Eany](x[]E,lessfunc(a,bE)bool)
泛型 maps
以下给大家介绍泛型库的 API 和对应的用法。如果有看源码的兴趣,可以查看 src/maps/maps.go 文件。
其包含如下方法:
funcKeys[M~map[K]V,Kcomparable,Vany](mM)[]KfuncValues[M~map[K]V,Kcomparable,Vany](mM)[]VfuncEqual[M1,M2~map[K]V,K,Vcomparable](m1M1,m2M2)boolfuncEqualFunc[M1~map[K]V1,M2~map[K]V2,Kcomparable,V1,V2any](m1M1,m2M2,eqfunc(V1,V2)bool)bool
funcDeleteFunc[M~map[K]V,Kcomparable,Vany](mM,delfunc(K,V)bool)funcClear[M~map[K]V,Kcomparable,Vany](mM)funcClone[M~map[K]V,Kcomparable,Vany](mM)MfuncCopy[M1~map[K]V,M2~map[K]V,Kcomparable,Vany](dstM1,srcM2)
总结
Go 语言加不加泛型,怎么加泛型。吵了十多年,才把泛型这个新特性纳入进来。又花了一年半的时间,才把标准库最常见用的 slices、maps 泛型再逐步纳入进来。
虽然听起来一切都是那么的让人激动。但你细数一下时间,其实是比较久的。等 Go 官方库都能够叱咤泛型,可能还需要相当一段的时间。
你在你的 Go 项目代码中用上了吗?