我有一些golang代码来操作接口类型的切片(可比较的)。为了测试我的代码,我想要创建一些假数据并对其进行操作。然而,我在这样做时遇到了困难,因为这样做并不令人难以置信的乏味。我想要做的唯一一件事是创建一个新类型,用于测试(在本例中是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类型不能用作可比类型。我明白为什么会发生这种事,但我不知道如何解决。首先,我不知道如何创建testInt类型的文字。第二,我必须编写大量这些函数。就我的目的而言,使用文字ints要方便得多。
是否有一种方法可以使用内置类型的类型别名,以便编译器能够用最少的代码正确地推断出正确的文字类型?
此外,是否有更好的方法来完成我正在尝试的工作,即生成满足测试中使用的接口的硬数据?
发布于 2013-08-06 08:15:20
func NewWhatevers(a ...int) (r []Whatever) {
r = make([]Whatever, len(a))
for i, v := range a {
r[i] = Whatever(v)
}
return
}
...
myWhatevers := NewWhatevers(7, 4, 2, 1)https://stackoverflow.com/questions/18074464
复制相似问题