Maison > développement back-end > Golang > Comment puis-je accéder à la méthode d'un type intégré dans Go lorsqu'elle est surchargée dans la structure enfant ?

Comment puis-je accéder à la méthode d'un type intégré dans Go lorsqu'elle est surchargée dans la structure enfant ?

Patricia Arquette
Libérer: 2024-11-14 22:50:02
original
929 Les gens l'ont consulté

How Can I Access an Embedded Type's Method in Go When It's Overloaded in the Child Struct?

Surcharge de méthodes dans Go : accès aux méthodes de type intégré

Lorsque vous travaillez avec des structures dans Go, il est possible de définir des méthodes à la fois sur le parent et structures intégrées (imbriquées). Cependant, lorsqu'une méthode est surchargée dans la structure enfant, accéder directement à la méthode de la structure de base peut sembler impossible.

Surcharge de méthodes avec surcharge de méthode

Dans l'exemple fourni, la structure Employee intègre une structure Human. Les deux structures définissent une méthode SayHi(). Cependant, la méthode SayHi() de la structure Employee remplace celle de la structure Human.

Accès aux méthodes de type intégrées

Pour accéder à la méthode de la structure intégrée, malgré la méthode surchargée , vous pouvez utiliser la syntaxe suivante :

parentMember.embeddedMemberName.methodName()
Copier après la connexion

Dans ce cas, pour appeler la méthode SayHi() de la structure Human à partir de la structure Employee, vous utiliseriez :

sam.Human.SayHi()
Copier après la connexion

Exemple de code

L'exemple suivant montre l'accès à la méthode de la structure intégrée :

package main

import "fmt"

type Human struct {
    name string
    age int
    phone string
}

func (h *Human) SayHi() {
    fmt.Printf("Hi, I am %s you can call me on %s\n", h.name, h.phone)
}

type Employee struct {
    Human
    company string
}

func (e *Employee) SayHi() {
    fmt.Printf("Hi, I am %s, I work at %s. Call me on %s\n", e.name, e.company, e.phone)
}

func main() {
    sam := Employee{Human{"Sam", 45, "111-888-XXXX"}, "Golang Inc"}
    sam.SayHi() // calls Employee.SayHi()
    sam.Human.SayHi() // calls Human.SayHi()
}
Copier après la connexion

Sortie :

Hi, I am Sam, I work at Golang Inc. Call me on 111-888-XXXX
Hi, I am Sam you can call me on 111-888-XXXX
Copier après la connexion

Cela démontre que même lorsqu'une méthode est surchargée dans une structure enfant, vous pouvez toujours accéder à la méthode du type incorporé en utilisant la syntaxe décrite ci-dessus.

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!

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