Ich versuche, eine Funktion in mein Dienstprogrammpaket zu implementieren, die jede Art von Slice paginiert. Es sollte einen Teil der Schnittstelle plus Seite und Seitengröße akzeptieren und muss denselben Schnittstellentyp zurückgeben.
Wenn ich jedoch versuche, die Funktion zu verwenden, erhalte ich eine Fehlermeldung: Meine Eingabe unterscheidet sich von
接口{}
Eintreten
cannot use result (variable of type []entity.something) as []interface{} value in argument to utility.paginateslice compilerincompatibleassign
Das ist meine Funktion:
// 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] }
Hier ist ein Beispiel dafür, wie ich versucht habe, es zu verwenden, was zum Scheitern führte:
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) }
verwendetTypparameter:
func PaginateSlice[S ~[]T, T any](x S, page, pageSize int) S { // insert body of function from question here }
Das obige ist der detaillierte Inhalt vonWie kann eine Funktion einer Schnittstelle erstellt werden, die über Schnittstelleneingabeparameter und einen Rückgabewert desselben Typs verfügt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!