Structs et méthodes embarqué Une autre façon de hériter des méthodes d'un type sans utiliser de structures intégrées. Cependant, cela nécessite une compréhension plus profonde du système de type Go. Comme s'ils faisaient partie de la structure contenant. Il s'agit d'une fonctionnalité puissante qui peut être utilisée pour créer des héritages entre les types.
le gotcha
Lorsque vous intégrez une structure, l'ensemble de méthode de la structure embarquée n'est pas Promu automatiquement dans la structure contenant. Pour promouvoir les méthodes, la structure embarquée doit être anonyme.
promotion de méthode
La promotion de la méthode est une fonctionnalité de langage qui permet aux méthodes d'une structure intégrée anonyme d'être accessible comme si C'étaient des méthodes de la structure contenant. Ceci est réalisé en suivant ces règles:
Si le champ anonyme a le type T, les méthodes promues ont des récepteurs de type T et * T , les méthodes promues ont des récepteurs de type t ou * T Map [String] Interface {} func (p props) getString (key string) String { return p [key]. (String) } Node de type struct { Accessoires } func main () { Node: = noeud {"test": "foo"} fmt.println (node.getString ("test")) // sortie: foo }
Dans cet exemple, le nœud struct incorpore une structure anonyme des accessoires de type. Cela permet à la méthode getString des accessoires d'être promus au nœud.
approche alternative
Une approche alternative sans intégrer est d'utiliser un récepteur de pointeur. En passant un pointeur à la fonction récepteur, vous pouvez accéder aux champs et méthodes de la structure sous-jacente sans avoir à l'intégrer.
Type Props Map [String] Interface {} func (p * prop) getString (key string) String { return p [key]. (String) } Node de type struct { Accessoires } func main () { nœud: = & node {accessoires {"test": "foo"}} fmt.println (node.getString ("test")) // sortie: foo }
Dans cet exemple, nous utilisons un récepteur de pointeur pour la méthode getString. Cela nous permet d'accéder aux champs et aux méthodes de la structure des accessoires sous-jacents sans avoir à l'intégrer. ne sont pas toujours le meilleur choix. Dans les cas où la promotion de la méthode n'est pas souhaitée ou nécessaire, l'utilisation d'un récepteur de pointeur peut fournir une alternative plus flexible et performante.Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3