Appel de méthodes sur des types nommés
Dans Go, les types nommés sont de nouveaux types de données créés à partir de ceux existants. Cela peut être utile pour ajouter des méthodes personnalisées au type sous-jacent, comme dans le cas de la désorganisation des données JSON. Cependant, lorsque le type nommé est créé de la manière indiquée ci-dessous, il perd la possibilité d'appeler les méthodes du type sous-jacent :
type StartTime time.Time
Par exemple, tenter d'appeler la méthode Date() sur myStartTime entraîne une erreur : myStartTime.Date non défini (tapez my_package.StartTime n'a pas de champ ni de méthode Date).
Solution : Embracing Embeddings
Pour résoudre ce problème et conserver les méthodes d'origine du type sous-jacent, on peut utiliser l'incorporation. En intégrant le type sous-jacent, le type nommé hérite de toutes ses méthodes et champs. Ce processus est illustré ci-dessous :
type StartTime struct { time.Time }
Dans ce scénario, toutes les méthodes et tous les champs de time.Time sont « promus » et deviennent accessibles via le type nommé. Par conséquent, appeler Date() sur s, une variable de type StartTime, ne génère plus d'erreur.
Exemple de démonstration :
type StartTime struct { time.Time } func main() { s := StartTime{time.Now()} fmt.Println(s.Date()) }
Ce code donne ce qui suit résultat :
2009 November 10
En utilisant l'intégration, vous pouvez facilement étendre les capacités des types existants tout en conservant leur original fonctionnalité.
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!