У Go (Golang) немає традиційного об'єктно-орієнтованого програмування (OOP), як у PHP, C# чи Java.
Проте Go підтримує такі концепції, як абстракція, поліморфізм, інкапсуляція та наслiдкування (хоча наслідування реалізовано через вбудовування типів, а не традиційне наслідування на основі класів).
У решті цієї статті я надам приклади цих особливостей у Go.
Ось приклад класу Rectangle
в традиційній мові OOP, такій як PHP:
class Rectangle {
public $width;
public $height;
public function __construct($width, $height) {
$this->width = $width;
$this->height = $height;
}
}
// Приклад використання
$rectangle = new Rectangle(5, 10);
echo "Area: " .
$rectangle->width * $rectangle->height;; // Виведення: Area: 50
Замість ключового слова class
, Go (Golang) використовує ключове слово struct
для визначення об'єктів.
package main
import "fmt"
type Rectangle struct {
Width float64
Height float64
}
func main() {
rectangle := Rectangle{Width: 5, Height: 10}
fmt.Printf("Area: %.2f\n", rectangle.Width*rectangle.Height) // Виведення: Area: 50.00
}
На цьому етапі ми розуміємо концепцію об'єктів у Go (Golang). У наступному розділі я поясню концепцію методів у об'єктах, яка дещо відрізняється від традиційних мов OOP.
Перекладено з: Golang — OOP