我有一些操作接口类型切片的 golang 代码(可比较)。为了测试我的代码,我想创建一些假数据并对其进行操作。但是,我在以一种并不乏味的方式执行此操作时遇到了麻烦。我唯一能想到的就是创建一个满足 Comparable 接口的用于测试的新类型(在本例中为 int 类型的别名),然后为我的测试提供该类型的文字切片。我设想它看起来像下面这样:
type Comparable interface {
LT(Comparable) bool
AsFloat() float64
}
type testInt int
func (self testInt) LT(other Comparable) bool {
return float64(self) < other.AsFloat()
}
func (self testInt) AsFloat() float64 {
return float64(self)
}
func TestAFunction(t *testing.T) {
FunctionToTest([]Comparable{7, 4, 2, 1})
....
}
然而,在这个例子中,编译器会抱怨 int 类型不能用作 Comparable。我明白为什么会发生这种情况,但我不知道如何解决它。首先,我不知道如何创建 testInt 类型的文字。其次,我必须编写大量这些函数。就我的目的而言,使用文字整数要方便得多。
有没有办法使用内置类型的类型别名,以便编译器可以用最少的代码正确推断出正确的文字类型?
此外,是否有更好的方法来完成我正在尝试做的事情,即生成满足用于测试的接口的硬数据?