Champs fonctionnels vs méthodes Struct
Dans Go, il existe deux manières d'associer une fonction à une structure : en tant que champ ou en tant que une méthode. Bien que les deux approches servent des objectifs différents, comprendre la distinction est crucial pour un codage efficace.
Champs de type de fonction
Un champ de type de fonction fait référence à une variable dans une structure qui peut contenir une fonction comme valeur. Il fournit un moyen simple de stocker des routines appelables pour une exécution ultérieure. Contrairement aux méthodes, ces champs de fonction ne font pas partie de l'ensemble de méthodes de la structure.
Méthodes
Les méthodes sont des fonctions explicitement attachées à un type de structure spécifique. . Lorsqu'ils sont déclarés avec la structure comme récepteur, ils font partie de l'ensemble de méthodes de la structure, donnant accès à l'état interne de la structure. La mise en œuvre d'interfaces nécessite de définir de vraies méthodes.
Quand utiliser laquelle
Exemple
Considérez l'extrait suivant :
<code class="go">type Foo struct { Bar func() } func main() { f := Foo{ Bar: func() { fmt.Println("initial") }, } f.Bar() f.Bar = func() { fmt.Println("changed") } f.Bar() }</code>
Ici, f.Bar est un champ de type fonction. Elle peut être réaffectée au moment de l'exécution, comme on le voit lorsque la deuxième valeur de fonction est attribuée et appelée.
Contrairement à une vraie méthode, Bar n'a accès à aucun état interne de Foo. Il fonctionne indépendamment de la structure elle-même.
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!