Maison > développement back-end > Golang > Créer une tranche à partir d'une autre tranche mais de type différent

Créer une tranche à partir d'une autre tranche mais de type différent

王林
Libérer: 2024-02-02 14:13:30
avant
562 Les gens l'ont consulté

Créer une tranche à partir dune autre tranche mais de type différent

Contenu de la question

Existe-t-il un moyen simple et lisible de créer une copie d'une tranche mais en utilisant un autre type ? Par exemple, j'ai reçu une tranche de int32 (mySlice []int32),但我需要它的副本,并且该副本应为 int64: copyOfMySlice []int64.

J'ai besoin de quelque chose de similaire :

func f(s []int32) int32 {
    
    var newSlice = make([]int64, len(s))

    copy(newSlice, s) // how this can be done?

    // work with newSlice

}
Copier après la connexion


Bonne réponse


Le seul moyen est de traduire et de copier chaque élément un par un. Vous pouvez écrire des fonctions de copie à l'aide de rappels de fonction :

func CopySlice[S, T any](source []S, translate func(S) T) []T {
    ret := make([]T, 0, len(source))
    for _, x := range source {
        ret = append(ret, translate(x))
    }
    return ret
}
Copier après la connexion

et utilisez-le :

intSlice:=CopySlice[uint32,int]([]uint32{1,2,3},func(in uint32) int {return int(in)})
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!

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