我正在尝试在实用程序包中实现一个函数,用于对给定的任何类型的切片进行分页。它应该接受一部分接口加上页面和页面大小,并且必须返回相同类型的接口。
但是,当我尝试使用该函数时,出现错误:我的输入与输入不
interface{}匹配
无法使用结果([]entity.Something 类型的变量)作为 utility.PaginateSlice 参数中的 []interface{} 值
这是我的功能:
// 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]
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试使用它导致失败的一个例子:
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)
}
Run Code Online (Sandbox Code Playgroud)
使用类型参数:
func PaginateSlice[S ~[]T, T any](x S, page, pageSize int) S {
// insert body of function from question here
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |