Maison développement back-end Golang Maîtriser les compétences d'application pratique des génériques Golang

Maîtriser les compétences d'application pratique des génériques Golang

Jan 20, 2024 am 08:39 AM
使用方法 深入理解 génériques golang

Maîtriser les compétences dapplication pratique des génériques Golang

Une compréhension approfondie de l'utilisation des génériques Golang nécessite des exemples de code spécifiques

Introduction :
Parmi de nombreux langages de programmation, les génériques (Generic) sont un outil de programmation puissant qui peut réaliser le paramétrage de type et améliorer la réutilisabilité et la flexibilité du code. Cependant, pour des raisons historiques, le langage Go n'a pas ajouté de support direct pour les génériques, ce qui rend de nombreux développeurs confus quant à l'implémentation de fonctions génériques. Cet article discutera de certaines méthodes d'implémentation des génériques dans Golang et fournira des exemples de code spécifiques pour aider les lecteurs à comprendre en profondeur l'utilisation des génériques Golang.

1. La définition et le rôle des génériques
Les génériques sont une idée de programmation qui peut paramétrer les types en tant que paramètres pour obtenir un traitement universel de plusieurs types. Il peut dissocier le code de types de données spécifiques, rendant le code plus flexible et réutilisable. Les génériques peuvent réduire considérablement la quantité de code écrit et améliorer la lisibilité et la maintenabilité des programmes.

2. Méthodes d'implémentation des génériques dans Golang
Bien que la version officielle de Golang ne prenne pas encore en charge les génériques, certains développeurs ont implémenté des fonctions de type générique grâce à des techniques intelligentes. Voici plusieurs méthodes courantes d'implémentation générique de Golang :

  1. Utiliser des interfaces pour implémenter des génériques
    L'interface dans Golang est un type abstrait qui peut recevoir n'importe quel type qui implémente l'interface. À l'aide des caractéristiques de l'interface, nous pouvons implémenter des fonctions de type générique. Voici un exemple :
package main

import "fmt"

type Generic interface {
    Print()
}

type IntType int

func (i IntType) Print() {
    fmt.Println(i)
}

type StringType string

func (s StringType) Print() {
    fmt.Println(s)
}

func main() {
    var items []Generic
    items = append(items, IntType(10))
    items = append(items, StringType("Hello, World!"))

    for _, item := range items {
        item.Print()
    }
}
Copier après la connexion

Le code ci-dessus définit une interface Generic, qui restreint la méthode Print à implémenter. Ensuite, nous avons défini deux types : IntType et StringType respectivement, et implémenté la méthode Print. Dans la fonction main, nous créons un tableau items pour stocker les types qui implémentent l'interface Generic. En chargeant différents types de données dans le tableau items, nous obtenons un effet de type générique. Generic接口,该接口约束了必须要实现Print方法。然后我们分别定义了IntTypeStringType两个类型,并实现了Print方法。在main函数中,我们创建了一个items数组,用于存储实现了Generic接口的类型。通过将不同类型的数据装入items数组,我们实现了类似泛型的效果。

  1. 使用反射实现泛型
    反射是golang的一种强大的语言特性,通过反射,我们可以在运行时动态获取和修改程序的结构和行为。有了反射的支持,我们可以实现泛型函数,例如下面的示例代码:
package main

import (
    "fmt"
    "reflect"
)

func Equals[T comparable](a, b T) bool {
    return reflect.DeepEqual(a, b)
}

func main() {
    fmt.Println(Equals(1, 1))           // true
    fmt.Println(Equals("Hello", "Hello")) // true
    fmt.Println(Equals(1, 2))           // false
    fmt.Println(Equals("Hello", "World")) // false
}
Copier après la connexion

上述代码中的Equals函数使用了类型参数T,该参数约束了输入参数ab必须是可比较的类型。通过使用reflect.DeepEqual函数实现了通用的相等判断,即使输入参数的类型不同,在运行时也可以正确比较。

  1. 使用代码生成工具实现泛型
    另一种实现golang泛型的方法是通过使用代码生成工具,例如github.com/cheekybits/genny。该工具允许我们在编译期根据模板生成不同的源代码,从而实现泛型的效果。以下是一个使用genny工具的示例:
package main

import (
    "fmt"

    "github.com/cheekybits/genny/generic"
)

//go:generate genny -in=$GOFILE -out=gen-$GOFILE gen "T=string"

type T generic.Type

func main() {
    var items []*T
    items = append(items, &T{"Hello"})
    items = append(items, &T{"World"})

    for _, item := range items {
        fmt.Println(*item)
    }
}
Copier après la connexion

上述代码中,我们通过go:generate指令调用genny工具,并使用了gen模板生成了对应的源代码(gen-golang_generic.go)。在生成的源代码中,我们使用了T类型参数,并定义了一个指向T类型的指针数组items,并将不同的T

    Utiliser la réflexion pour implémenter des génériques

    La réflexion est une fonctionnalité puissante du langage Golang. Grâce à la réflexion, nous pouvons obtenir et modifier dynamiquement la structure et le comportement du programme au moment de l'exécution. Avec le support de la réflexion, nous pouvons implémenter des fonctions génériques, telles que l'exemple de code suivant :

    rrreee🎜La fonction Equals dans le code ci-dessus utilise le paramètre de type T, which La contrainte de paramètre selon laquelle les paramètres d'entrée a et b doivent être de types comparables. En utilisant la fonction reflect.DeepEqual, un jugement d'égalité universelle est obtenu. Même si les paramètres d'entrée sont de types différents, ils peuvent être comparés correctement au moment de l'exécution. 🎜
      🎜Utilisez des outils de génération de code pour implémenter des génériques🎜Une autre façon d'implémenter des génériques Golang consiste à utiliser des outils de génération de code, tels que github.com/cheekybits/genny. Cet outil nous permet de générer différents codes sources basés sur des modèles lors de la compilation pour obtenir des effets génériques. Voici un exemple d'utilisation de l'outil genny : 🎜🎜rrreee🎜Dans le code ci-dessus, nous appelons l'outil genny via l'instruction go:generate et utilisons le modèle gen pour générer le code source correspondant (gen-golang_generic.go). Dans le code source généré, nous avons utilisé le paramètre de type T et défini un tableau de pointeurs T pointant vers le type T, et défini différents éléments de type T sont ajoutés au tableau, et enfin le contenu du tableau est imprimé. 🎜🎜Résumé : 🎜Cet article présente plusieurs méthodes courantes d'implémentation générique de Golang et fournit des exemples de code spécifiques. Bien que Golang ne prenne pas directement en charge les génériques, nous pouvons toujours implémenter des fonctions de type générique dans Golang en utilisant des technologies telles que des interfaces, des outils de réflexion et de génération de code. J'espère que grâce à l'introduction de cet article, les lecteurs auront une compréhension plus approfondie de l'utilisation des génériques Golang et pourront les utiliser de manière flexible dans le développement réel. 🎜

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser l'outil de réparation DirectX ? Utilisation détaillée de l'outil de réparation DirectX Comment utiliser l'outil de réparation DirectX ? Utilisation détaillée de l'outil de réparation DirectX Mar 15, 2024 am 08:31 AM

L'outil de réparation DirectX est un outil système professionnel. Sa fonction principale est de détecter l'état DirectX du système actuel. Si une anomalie est détectée, elle peut être réparée directement. De nombreux utilisateurs ne savent peut-être pas comment utiliser l'outil de réparation DirectX. Jetons un coup d'œil au didacticiel détaillé ci-dessous. 1. Utilisez le logiciel de l'outil de réparation pour effectuer la détection des réparations. 2. S'il y a un problème anormal dans le composant C++ une fois la réparation terminée, cliquez sur le bouton Annuler, puis sur la barre de menu Outils. 3. Cliquez sur le bouton Options, sélectionnez l'extension, puis cliquez sur le bouton Démarrer l'extension. 4. Une fois l'extension terminée, détectez-la à nouveau et réparez-la. 5. Si le problème n'est toujours pas résolu une fois l'opération de l'outil de réparation terminée, vous pouvez essayer de désinstaller et de réinstaller le programme qui a signalé l'erreur.

Introduction au code d'état HTTP 525 : explorez sa définition et son application Introduction au code d'état HTTP 525 : explorez sa définition et son application Feb 18, 2024 pm 10:12 PM

Introduction au code d'état HTTP 525 : Comprendre sa définition et son utilisation Le code d'état HTTP (HypertextTransferProtocol) 525 signifie que le serveur a une erreur lors du processus de prise de contact SSL, entraînant l'incapacité d'établir une connexion sécurisée. Le serveur renvoie ce code d'état lorsqu'une erreur se produit lors de la négociation TLS (Transport Layer Security). Ce code d'état appartient à la catégorie des erreurs de serveur et indique généralement un problème de configuration ou d'installation du serveur. Lorsque le client tente de se connecter au serveur via HTTPS, le serveur n'a aucun

Comment utiliser Baidu Netdisk-Comment utiliser Baidu Netdisk Comment utiliser Baidu Netdisk-Comment utiliser Baidu Netdisk Mar 04, 2024 pm 09:28 PM

De nombreux amis ne savent toujours pas comment utiliser Baidu Netdisk, c'est pourquoi l'éditeur vous expliquera ci-dessous comment utiliser Baidu Netdisk. Si vous en avez besoin, dépêchez-vous et jetez un œil. Étape 1 : Connectez-vous directement après avoir installé Baidu Netdisk (comme indiqué sur l'image) ; Étape 2 : Sélectionnez ensuite « Mon partage » et « Liste de transfert » selon les invites de la page (comme indiqué sur l'image) ; Partage entre amis", vous pouvez partager des images et des fichiers directement avec des amis (comme indiqué sur l'image) ; Étape 4 : Sélectionnez ensuite "Partager", puis sélectionnez les fichiers de l'ordinateur ou les fichiers du disque réseau (comme indiqué sur l'image) ; Cinquième étape 1 : Ensuite, vous pouvez trouver des amis (comme indiqué sur l'image) ; Étape 6 : Vous pouvez également trouver les fonctions dont vous avez besoin dans la « Boîte au trésor des fonctions » (comme indiqué sur l'image). Ce qui précède est l’opinion de l’éditeur

Apprenez à copier et coller rapidement Apprenez à copier et coller rapidement Feb 18, 2024 pm 03:25 PM

Comment utiliser les touches de raccourci copier-coller Le copier-coller est une opération que l'on rencontre souvent lors de l'utilisation quotidienne d'un ordinateur. Afin d'améliorer l'efficacité du travail, il est très important de maîtriser les touches de raccourci copier-coller. Cet article présentera certaines touches de raccourci copier-coller couramment utilisées pour aider les lecteurs à effectuer plus facilement les opérations de copier-coller. Touche de raccourci de copie : Ctrl+CCtrl+C est la touche de raccourci pour la copie. En maintenant la touche Ctrl enfoncée puis en appuyant sur la touche C, vous pouvez copier le texte, les fichiers, les images, etc. sélectionnés dans le presse-papiers. Pour utiliser cette touche de raccourci,

Qu'est-ce que l'outil d'activation KMS ? Comment utiliser l'outil d'activation KMS ? Comment utiliser l'outil d'activation KMS ? Qu'est-ce que l'outil d'activation KMS ? Comment utiliser l'outil d'activation KMS ? Comment utiliser l'outil d'activation KMS ? Mar 18, 2024 am 11:07 AM

L'outil d'activation KMS est un outil logiciel utilisé pour activer les produits Microsoft Windows et Office. KMS est l'abréviation de KeyManagementService, qui est un service de gestion de clés. L'outil d'activation KMS simule les fonctions du serveur KMS afin que l'ordinateur puisse se connecter au serveur KMS virtuel pour activer les produits Windows et Office. L'outil d'activation KMS est de petite taille et puissant en fonction. Il peut être activé en permanence en un seul clic. Il peut activer n'importe quelle version du système Windows et n'importe quelle version du logiciel Office sans être connecté à Internet. et outil d'activation Windows fréquemment mis à jour. Aujourd'hui, je vais le présenter. Permettez-moi de vous présenter le travail d'activation de kms.

Comment fusionner des cellules à l'aide des touches de raccourci Comment fusionner des cellules à l'aide des touches de raccourci Feb 26, 2024 am 10:27 AM

Comment utiliser les touches de raccourci pour fusionner des cellules Dans le travail quotidien, nous devons souvent éditer et formater des tableaux. La fusion de cellules est une opération courante qui permet de fusionner plusieurs cellules adjacentes en une seule cellule pour améliorer la beauté du tableau et l'effet d'affichage des informations. Dans les tableurs grand public tels que Microsoft Excel et Google Sheets, l'opération de fusion de cellules est très simple et peut être réalisée via des touches de raccourci. Ce qui suit présentera l'utilisation des touches de raccourci pour fusionner des cellules dans ces deux logiciels. exister

Comment utiliser Potplayer-Comment utiliser Potplayer Comment utiliser Potplayer-Comment utiliser Potplayer Mar 04, 2024 pm 06:10 PM

Potplayer est un lecteur multimédia très puissant, mais de nombreux amis ne savent toujours pas comment utiliser potplayer. Aujourd'hui, je vais vous présenter en détail comment utiliser potplayer, dans l'espoir d'aider tout le monde. 1. Touches de raccourci PotPlayer. Les touches de raccourci communes par défaut pour le lecteur PotPlayer sont les suivantes : (1) Lecture/pause : espace (2) Volume : molette de la souris, touches fléchées haut et bas (3) avant/arrière : flèches gauche et droite. touches (4) signet : P- Ajouter des signets, H-View signets (5) Plein écran/restauration : Entrée (6) Vitesse : C-accélération, 7) Image précédente/suivante : D/

Comment utiliser l'outil d'activation Xiaomi win7 - Comment utiliser l'outil d'activation Xiaomi win7 Comment utiliser l'outil d'activation Xiaomi win7 - Comment utiliser l'outil d'activation Xiaomi win7 Mar 04, 2024 pm 06:16 PM

Je pense que de nombreux utilisateurs utilisent l'outil d'activation Xiaomi win7, mais savez-vous comment utiliser l'outil d'activation Xiaomi win7. Ensuite, l'éditeur vous expliquera comment utiliser l'outil d'activation Xiaomi win7. Pour ceux qui sont intéressés par cela, veuillez venir à l'article suivant Voyons. La première étape consiste à accéder à « Poste de travail » après avoir réinstallé le système, à cliquer sur « Propriétés système » dans le menu supérieur et à vérifier l'état d'activation de Windows. Dans la deuxième étape, cliquez pour télécharger l'outil d'activation win7 en ligne et cliquez pour l'ouvrir (de nombreuses ressources sont disponibles partout). La troisième étape consiste à ouvrir l'outil d'activation Xiaomi et à cliquer sur "Activer Windows de manière permanente". La quatrième étape consiste à attendre que le processus d'activation termine l'activation. Étape 5 : Vérifiez à nouveau l'état d'activation de Windows et constatez que le système a été activé.

See all articles