问题内容
我正在尝试在我的实用程序包中实现一个函数,用于对给定的任何类型的切片进行分页。它应该接受一部分接口加上页面和页面大小,并且必须返回相同类型的接口。
但是,当我尝试使用该函数时,出现错误:我的输入与
接口{}
输入
cannot use result (variable of type []entity.something) as []interface{} value in argument to utility.paginateslice compilerincompatibleassign
这是我的功能:
// paginatelist, paginates a slice based upon its page and pagesize.
func paginateslice(x []interface{}, page, pagesize int) []interface{} {
var maxsize int = len(x)
start := (page - 1) * pagesize
end := start + pagesize - 1
if start > maxsize || page < 1 || pagesize < 1 {
start = 0
end = 0
} else if end > maxsize {
end = maxsize
}
return x[start:end]
}
这是我尝试使用它导致失败的一个例子:
var result []entity.Something
tmps := utility.PaginateSlice(dataOfSomethingType, pagination.Page, pagination.PageSize)
for _, tmp := range tmps {
if value, ok := tmp.(entity.Something); ok {
result = append(result, value)
}
正确答案
使用类型参数:
func PaginateSlice[S ~[]T, T any](x S, page, pageSize int) S {
// insert body of function from question here
}
以上就是如何拥有一个具有接口输入参数和相同类型返回值的接口的函数?的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/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
咦!没有更多了?去看看其它编程学习网 内容吧