Les méthodes et interfaces en langage Go sont des concepts très importants. Maîtriser l'utilisation de ces deux points de connaissances peut améliorer la réutilisabilité et la flexibilité des programmes en langage Go.
Méthodes
En langage Go, une méthode est une fonction associée à un type spécifique. Cela peut être considéré comme une fonction avec un type d’argument récepteur spécial.
Lors de la déclaration d'une méthode, le paramètre récepteur vient avant le nom de la méthode. Le récepteur peut être un type valeur ou un type pointeur. Un récepteur de type valeur équivaut à faire une copie de la valeur, et un récepteur de type pointeur transmet l'adresse de la valeur. Cela signifie qu'il est plus efficace d'utiliser des récepteurs de type pointeur car ils évitent la copie de valeurs dans les appels de méthode.
Voici un exemple de programme qui montre comment déclarer et utiliser des méthodes :
package main import "fmt" type Rectangle struct { width, height float64 } func (r Rectangle) area() float64 { return r.width * r.height } func main() { r := Rectangle{3, 4} fmt.Println("Area: ", r.area()) }
Dans l'exemple de programme ci-dessus, nous avons défini un type de structure appelé Rectangle. Ce type a deux champs de largeur et de hauteur. Nous définissons également une méthode appelée zone dont le récepteur est de type Rectangle et renvoie son aire.
Dans la fonction principale, nous créons une variable de type Rectangle nommée r et appelons sa méthode Area.
Interface
Une interface est un type qui décrit le comportement d'un objet. Il définit un ensemble de méthodes mais ne les implémente pas. La mise en œuvre de ses méthodes est laissée aux types spécifiques respectifs.
En langage Go, une interface est un type qui peut être implémenté par n'importe quel autre type. Si un type implémente toutes les méthodes spécifiées dans l’interface, alors le type est le type d’implémentation de l’interface.
Voici un exemple de programme qui montre comment déclarer et utiliser une interface :
package main import "fmt" type shape interface { area() float64 perimeter() float64 } type Rectangle struct { width, height float64 } type Circle struct { radius float64 } func (r Rectangle) area() float64 { return r.width * r.height } func (r Rectangle) perimeter() float64 { return 2*r.width + 2*r.height } func (c Circle) area() float64 { return 3.14 * c.radius * c.radius } func (c Circle) perimeter() float64 { return 2 * 3.14 * c.radius } func printShape(s shape) { fmt.Println("Area: ", s.area()) fmt.Println("Perimeter: ", s.perimeter()) } func main() { r := Rectangle{3, 4} c := Circle{5} printShape(r) printShape(c) }
Dans l'exemple de programme ci-dessus, nous définissons une interface nommée shape. Cette interface définit deux méthodes zone et périmètre. Nous avons également défini deux types structurels, Rectangle et Cercle, et implémenté les méthodes définies par l'interface de forme sur ces types. Enfin, nous définissons une fonction appelée printShape qui prend un paramètre qui implémente l'interface de forme et imprime la zone et le périmètre de ce type.
Dans la fonction principale, nous créons une variable de type Rectangle nommée r et une variable de type Cercle nommée c et les transmettons à la fonction printShape. Étant donné que les types Rectangle et Circle implémentent l’interface de forme, ils peuvent être transmis à la fonction printShape pour traitement.
Conclusion
Dans le langage Go, les méthodes et les interfaces sont des concepts très importants. Ils peuvent nous aider à mieux organiser et réutiliser le code, et à améliorer l'évolutivité et la flexibilité du programme. Dans le même temps, ils peuvent également rendre notre code plus facile à maintenir et à comprendre.
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!