我想创建一个 Vector 类型,它在其内部数据上是通用的,但在给定输入类型的情况下,方法的实现方式可能有所不同。
type SupportedType interface {
~int64 | ~uint64 | ~float64 | string | bool | time.Time
}
type Vec[T SupportedType] struct {
data []T
}
我想根据类型在函数上添加不同的实现。例如:
func (vec Vec[T]) Sort() {
...
}
在大多数通用类型<中都可以正常工作。但是,如果T -> time.Time我想使用该Before方法,T --> bool那么我希望所有假值都在真值之前。
我对如何实现这一点有一些想法,但在新的仿制药世界中,什么会被认为是“惯用的”?我的应用程序对性能敏感。
将类型联合与所有具有相同功能的类型一起使用是行不通的 ( https://play.golang.com/p/QWE-XteWpjL )。
在类型特定的结构中嵌入容器确实有效(https://play.golang.com/p/j0AR48Mto-a),但需要使用接口,这意味着示例函数中的LessandVal不能内联。如果类型联合中的子集之间没有清晰的描述,它也可能无法很好地工作。
绝地无双
侃侃无极
相关分类