Wie kann eine Funktion einer Schnittstelle erstellt werden, die über Schnittstelleneingabeparameter und einen Rückgabewert desselben Typs verfügt?

王林
Freigeben: 2024-02-05 23:48:07
nach vorne
590 Leute haben es durchsucht

Wie kann eine Funktion einer Schnittstelle erstellt werden, die über Schnittstelleneingabeparameter und einen Rückgabewert desselben Typs verfügt?

Frageninhalt

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
Nach dem Login kopieren

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]
}
Nach dem Login kopieren

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)
}
Nach dem Login kopieren


Richtige Antwort


verwendetTypparameter:

func PaginateSlice[S ~[]T, T any](x S, page, pageSize int) S {
    // insert body of function from question here
}
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage