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
Patricia Arquetteoriginal
2024-11-14 22:50:02887parcourir

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()

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

sam.Human.SayHi()

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()
}

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

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:
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