我正在尝试在我的实用程序包中实现一个函数,用于对给定的任何类型的切片进行分页。它应该接受一部分接口加上页面和页面大小,并且必须返回相同类型的接口。
但是,当我尝试使用该函数时,出现错误:我的输入与
接口{}
输入
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 }
以上是如何拥有一个具有接口输入参数和相同类型返回值的接口的函数?的详细内容。更多信息请关注PHP中文网其他相关文章!