Fonctionnalités orientées objet et exemples d'application en langage Go
Résumé : Cet article présentera les fonctionnalités et les exemples d'application de la programmation orientée objet en langage Go, et expliquera en détail comment utiliser des idées orientées objet pour la programmation en langage Go à travers exemples de codes.
Introduction : La programmation orientée objet est un paradigme de programmation très largement utilisé. Elle encapsule des données et des opérations dans un objet et implémente la logique du programme à travers des interactions entre les objets. Dans le langage Go, la programmation orientée objet présente également des caractéristiques uniques et des exemples d'application, qui seront présentés en détail dans cet article.
1. Fonctionnalités orientées objet
Exemple de code 1 :
package main import "fmt" type Rect struct { width float64 height float64 } func (r *Rect) Area() float64 { return r.width * r.height } func main() { rect := Rect{width: 3, height: 4} fmt.Println(rect.Area()) }
Exemple de code 2 :
package main import "fmt" type Animal struct { name string } func (a *Animal) SayName() { fmt.Println("My name is", a.name) } type Dog struct { Animal } func main() { dog := Dog{Animal: Animal{name: "Tom"}} dog.SayName() }
Exemple de code 3 :
package main import "fmt" type Shape interface { Area() float64 } type Rect struct { width float64 height float64 } func (r *Rect) Area() float64 { return r.width * r.height } type Circle struct { radius float64 } func (c *Circle) Area() float64 { return 3.14 * c.radius * c.radius } func printArea(s Shape) { fmt.Println("Area:", s.Area()) } func main() { rect := &Rect{width: 3, height: 4} circle := &Circle{radius: 2} printArea(rect) printArea(circle) }
2. Exemples d'applications orientées objet
Exemple de code 4 :
package main import "fmt" type Shape interface { Area() float64 Perimeter() float64 } type Rectangle struct { length float64 width float64 } func (r *Rectangle) Area() float64 { return r.length * r.width } func (r *Rectangle) Perimeter() float64 { return 2 * (r.length + r.width) } type Circle struct { radius float64 } func (c *Circle) Area() float64 { return 3.14 * c.radius * c.radius } func (c *Circle) Perimeter() float64 { return 2 * 3.14 * c.radius } func main() { rectangle := &Rectangle{length: 3, width: 4} circle := &Circle{radius: 2} shapes := []Shape{rectangle, circle} for _, shape := range shapes { fmt.Println("Area:", shape.Area()) fmt.Println("Perimeter:", shape.Perimeter()) } }
Exemple de code 5 :
package main import "fmt" type Product struct { name string price float64 } type ShoppingCart struct { products []*Product } func (sc *ShoppingCart) AddProduct(product *Product) { sc.products = append(sc.products, product) } func (sc *ShoppingCart) RemoveProduct(name string) { for i, product := range sc.products { if product.name == name { sc.products = append(sc.products[:i], sc.products[i+1:]...) break } } } func (sc *ShoppingCart) CalculateTotalPrice() float64 { totalPrice := 0.0 for _, product := range sc.products { totalPrice += product.price } return totalPrice } func main() { product1 := &Product{name: "Apple", price: 2.5} product2 := &Product{name: "Banana", price: 1.5} product3 := &Product{name: "Orange", price: 1.0} shoppingCart := &ShoppingCart{} shoppingCart.AddProduct(product1) shoppingCart.AddProduct(product2) shoppingCart.AddProduct(product3) fmt.Println("Total Price:", shoppingCart.CalculateTotalPrice()) shoppingCart.RemoveProduct("Banana") fmt.Println("Total Price:", shoppingCart.CalculateTotalPrice()) }
Résumé : Cet article présente les caractéristiques et les exemples d'application de la programmation orientée objet en langage Go, et explique en détail comment utiliser des idées orientées objet pour la programmation en langage Go à travers des exemples de code. La programmation orientée objet peut améliorer la réutilisabilité et l'évolutivité du code, et mieux organiser et gérer la logique du programme. Il s'agit d'un paradigme de programmation très important et pratique.
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!