Maison  >  Article  >  développement back-end  >  Comment implémenter la surcharge de méthodes en langage Go

Comment implémenter la surcharge de méthodes en langage Go

WBOY
WBOYoriginal
2024-04-03 12:15:02553parcourir

La surcharge de méthodes n'est pas prise en charge dans le langage Go, mais la simulation d'interface peut être utilisée. Étapes de surcharge de méthode : 1. Créer une interface contenant toutes les signatures possibles ; 2. Implémenter plusieurs méthodes avec différentes signatures pour implémenter l'interface.

Comment implémenter la surcharge de méthodes en langage Go

Comment implémenter la surcharge de méthodes en langage Go

La surcharge de méthodes est une situation où il est autorisé d'utiliser des méthodes avec le même nom mais des signatures différentes. En langage Go, la surcharge de méthodes n'est pas directement prise en charge, mais elle peut être simulée à l'aide d'interfaces.

Implémenter

Créez une interface avec toutes les signatures possibles :

type MyInterface interface {
    Method1(args1 int)
    Method1(args1 float32)
}

Ensuite, implémentez plusieurs méthodes avec différentes signatures qui implémentent l'interface :

type MyStruct struct {}

func (ms MyStruct) Method1(args1 int) {}
func (ms MyStruct) Method1(args1 float32) {}

Exemple pratique

Considérons un programme qui calcule l'aire . Il devrait être capable de calculer l'aire des rectangles et des cercles.

type Shape interface {
    Area() float32
}

type Rectangle struct {
    Width, Height float32
}

func (r Rectangle) Area() float32 {
    return r.Width * r.Height
}

type Circle struct {
    Radius float32
}

func (c Circle) Area() float32 {
    return math.Pi * c.Radius * c.Radius
}

func main() {
    shapes := []Shape{
        Rectangle{5, 10},
        Circle{5},
    }

    for _, shape := range shapes {
        fmt.Println(shape.Area())
    }
}

Dans cet exemple, les structures Shape 接口定义了计算面积的方法。RectangleCircle implémentent toutes cette interface, fournissant des implémentations spécifiques pour calculer l'aire de leurs formes respectives.

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