Heim >Backend-Entwicklung >Golang >Wie kann eine Funktion einer Schnittstelle erstellt werden, die über Schnittstelleneingabeparameter und einen Rückgabewert desselben Typs verfügt?

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

王林
王林nach vorne
2024-02-05 23:48:07616Durchsuche

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

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

Richtige Antwort


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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen