Lorsque vous traitez des types nommés, il est important de comprendre la distinction entre la création d'un nouveau type et l'intégration d'un type existant. Explorons comment ajouter des méthodes à un type existant tout en préservant ses méthodes d'origine.
Cas 1 : Types nommés
Si vous utilisez le mot-clé type pour définir un nouveau type , il sera distinct du type sous-jacent. Par exemple, dans l'extrait de code fourni :
type StartTime time.Time
StartTime est un nouveau type, et il n'aura pas les méthodes time.Time, telles que Date(). En effet, les types nommés n'héritent pas des méthodes de leurs types sous-jacents.
Cas 2 : Incorporation
Pour ajouter des méthodes à un type existant sans perdre ses méthodes d'origine, utilisez intégration. Cela implique de créer une nouvelle structure qui intègre le type existant. Par exemple, nous pourrions réécrire le code ci-dessus en utilisant l'intégration :
type StartTime struct { time.Time }
Dans ce cas, StartTime intègre time.Time, ce qui signifie qu'il inclut toutes ses méthodes et tous ses champs.
Comment L'intégration fonctionne
Lorsqu'une structure intègre une autre structure de manière anonyme (sans spécifier de nom de champ), les champs et les méthodes de la structure intégrée est promue en structure d'intégration. Cela signifie qu'ils peuvent être utilisés directement sur l'instance de la structure d'intégration.
Exemple d'utilisation
Avec l'intégration, vous pouvez accéder aux méthodes de StartTime et de time.Time :
func main() { s := StartTime{time.Now()} fmt.Println(s.Date()) // Will output the current date }
Conclusion
Si vous en avez besoin modifiez le comportement ou ajoutez des méthodes à un type existant, pensez à utiliser l'intégration. Il permet de conserver les méthodes d'origine tout en étendant les fonctionnalités du type.
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!