问题内容
我试图在编写断言函数来测试事物时使用泛型,但是它给了我一个错误 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...)"
}
正确答案
替换
func (s *some) equals(other some) bool {
与
func (s *some) equals(other testutilt) bool {
然后替换
assert[some](t, "", some{}, some{})
与
Assert[Some](t, "", &Some{}, &Some{})
第一个更改将修复您的初始错误消息,但如果没有第二个更改,您的代码仍然无法工作。
以上就是具有方法作为泛型函数的类型约束的接口的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数260
191.63 KB下载数245
143.91 KB下载数1139
183.71 KB下载数640
644.84 KB下载数2752
相关文章
发现更多好内容猜你喜欢
AI推送时光机具有方法作为泛型函数的类型约束的接口
后端开发2024-02-06
为什么 Go 函数不能返回带有约束类型参数的类型?
后端开发2024-02-09
将具有精确约束的类型参数传递给具有该参数的函数?
后端开发2024-02-06
C#类型参数约束的应用方法有哪些
后端开发2023-06-17
Go:如何指定类型约束,其中方法的参数类型与接收者的类型相同
后端开发2024-02-09
C#快速实现IList非泛型类接口的自定义类作为数据源
后端开发2023-02-06
C#使用泛型方法实现操作不同数据类型的数组
后端开发2024-04-02
如何拥有一个具有接口输入参数和相同类型返回值的接口的函数?
后端开发2024-02-06
如何使用带有方法的字符串枚举作为泛型参数?
后端开发2024-02-10
springboot接收日期类型参数的操作方法
后端开发2024-04-02
Go - 强制接口仅由方法上带有指针接收器的类型满足?
后端开发2024-02-10
类型无法实现“X”,因为它具有非导出方法并且是在不同的包中定义的
后端开发2024-02-09
咦!没有更多了?去看看其它编程学习网 内容吧