Maison > développement back-end > Golang > Comment puis-je contraindre les types génériques dans Go pour garantir la présence de champs spécifiques ?

Comment puis-je contraindre les types génériques dans Go pour garantir la présence de champs spécifiques ?

Mary-Kate Olsen
Libérer: 2024-12-06 06:41:12
original
491 Les gens l'ont consulté

How Can I Constrain Generic Types in Go to Ensure the Presence of Specific Fields?

Contraintes de type génériques pour la présence de champs

Question

Les développeurs rencontrent souvent le besoin de définir une fonction générique dans Go qui accepte des valeurs ayant certains champs. Un exemple courant est la nécessité d'accéder à un champ nommé ID avec un type entier. Malgré les tentatives, les contraintes génériques semblent s'avérer insaisissables.

Réponse

Malheureusement, sans définir le champ dans une interface, appliquer de telles contraintes dans Go n'est pas réalisable. Contrairement à certaines propositions, l'implémentation actuelle ne prend pas en charge les types structurels dans les génériques.

Contraintes d'interface

L'application de la présence sur le terrain nécessite la définition du champ dans une interface. Cette interface servira de contrainte de type, garantissant que tout type passé à la fonction générique possède le champ requis :

type IDer interface {
    ID int
}
Copier après la connexion

Propriétés accessibles

Pour accéder au champ contraint au sein de la fonction générique, le type passé doit satisfaire la contrainte d'interface. Cette approche fournit un mécanisme pour garantir la présence et l'accessibilité du champ souhaité :

func Print[T IDer](s T) {
    fmt.Print(s.ID)
}
Copier après la connexion

Limitations

Il est important de noter que cette approche ne prend pas en charge l'accès aux champs avec une structure partielle genres. Cependant, les versions futures pourraient remédier à cette limitation.

Conclusion

Imposer la présence de certains champs dans les fonctions génériques nécessite la définition des méthodes correspondantes dans une interface. Cette contrainte garantit que les types passés à la fonction possèdent les champs nécessaires à la manipulation.

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:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal