Maison  >  Article  >  développement back-end  >  Surcharge de fonction Golang et polymorphisme

Surcharge de fonction Golang et polymorphisme

PHPz
PHPzoriginal
2024-04-15 21:42:01759parcourir

Le langage Go ne prend pas en charge la surcharge de fonctions, mais le polymorphisme est obtenu via les interfaces. Une interface définit les méthodes qu'un type qui implémente l'interface doit implémenter, permettant au même type d'interface d'être utilisé pour représenter différents types d'objets et implémenter différents comportements.

Surcharge de fonction Golang et polymorphisme

Surcharge de fonctions et polymorphisme en langage Go

Surcharge de fonctions

La surcharge de fonctions permet la création de plusieurs fonctions portant le même nom dans la même portée, mais la liste des paramètres de la fonction (type de paramètre, quantité et commande) sont différents. Le langage Go ne prend pas en charge la surcharge de fonctions au sens traditionnel.

Polymorphisme

Le polymorphisme permet d'utiliser le même type d'interface pour représenter différents types d'objets, obtenant ainsi des comportements différents. Le langage Go implémente le polymorphisme via des interfaces. Une interface définit un ensemble de méthodes qu'un type qui implémente l'interface doit implémenter.

Cas pratique

Voici un exemple d'utilisation d'interfaces pour réaliser le polymorphisme :

// Shape 接口定义了形状的基本操作
type Shape interface {
    Area() float64
    Perimeter() float64
}

// Circle 结构体实现了 Shape 接口
type Circle struct {
    Radius float64
}

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

func (c Circle) Perimeter() float64 {
    return 2 * math.Pi * c.Radius
}

// Square 结构体实现了 Shape 接口
type Square struct {
    Side float64
}

func (s Square) Area() float64 {
    return s.Side * s.Side
}

func (s Square) Perimeter() float64 {
    return 4 * s.Side
}

// 计算不同形状的面积和周长
func CalculateShape(s Shape) {
    fmt.Println("面积:", s.Area())
    fmt.Println("周长:", s.Perimeter())
}

func main() {
    circle := Circle{Radius: 5.0}
    square := Square{Side: 3.0}

    // 使用相同的 CalculateShape 函数计算不同形状的面积和周长
    CalculateShape(circle)
    CalculateShape(square)
}

Dans cet exemple, Shape 接口定义了 AreaPerimeter 方法,CircleSquare 结构体实现了该接口。CalculateShape 函数接收一个 Shape prend les paramètres du type d'interface et calcule son aire et son périmètre, réalisant ainsi le polymorphisme.

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