Maison > développement back-end > Golang > Comment avoir une fonction d'interface qui a des paramètres d'entrée d'interface et une valeur de retour du même type ?

Comment avoir une fonction d'interface qui a des paramètres d'entrée d'interface et une valeur de retour du même type ?

王林
Libérer: 2024-02-05 23:48:07
avant
611 Les gens l'ont consulté

Comment avoir une fonction dinterface qui a des paramètres dentrée dinterface et une valeur de retour du même type ?

Contenu de la question

J'essaie d'implémenter une fonction dans mon package utilitaire qui paginera tout type de tranche donnée. Il doit accepter une partie de l'interface ainsi que la page et la taille de la page, et doit renvoyer le même type d'interface.

Cependant, lorsque j'essaie d'utiliser la fonction, j'obtiens une erreur : Ma saisie est différente de 接口{}Entrez

cannot use result (variable of type []entity.something) as []interface{} value in argument to utility.paginateslice compilerincompatibleassign
Copier après la connexion

Voici ma fonction :

// 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]
}
Copier après la connexion

Voici un exemple de moi essayant de l'utiliser qui a abouti à un échec :

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)
}
Copier après la connexion


Bonne réponse


utiliseparamètres de type :

func PaginateSlice[S ~[]T, T any](x S, page, pageSize int) S {
    // insert body of function from question here
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal