如何拥有一个具有接口输入参数和相同类型返回值的接口的函数?

2024年 2月 6日 33.0k 0

如何拥有一个具有接口输入参数和相同类型返回值的接口的函数?

问题内容

我正在尝试在我的实用程序包中实现一个函数,用于对给定的任何类型的切片进行分页。它应该接受一部分接口加上页面和页面大小,并且必须返回相同类型的接口。

但是,当我尝试使用该函数时,出现错误:我的输入与
接口{}输入

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 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
}

登录后复制

以上就是如何拥有一个具有接口输入参数和相同类型返回值的接口的函数?的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论