我试图利用泛型时,写一个Assert函数测试的东西,但它给了我一个错误Some does not implement TestUtilT (wrong type for method Equals...)
错误。我如何才能使代码波纹管的工作,如果在所有?
package test_util
import (
"fmt"
"testing"
)
type TestUtilT interface {
Equals(TestUtilT) bool
String() string
}
func Assert[U TestUtilT](t *testing.T, location string, must, is U) {
if !is.Equals(must) {
t.Fatalf("%s expected: %s got: %s\n",
fmt.Sprintf("[%s]", location),
must,
is,
)
}
}
type Some struct {
}
func (s *Some) Equals(other Some) bool {
return true
}
func (s *Some) String() string {
return ""
}
func TestFunc(t *testing.T) {
Assert[Some](t, "", Some{}, Some{})
// Error: "Some does not implement TestUtilT (wrong type for method Equals...)"
}
1条答案
按热度按时间t0ybt7op1#
替换
与
然后更换
与
第一个更改将修复最初的错误消息,但是如果没有第二个更改,代码仍然无法正常工作。