Структры и Интерфейсы

Messages
1,679
Reaction score
288
Website
tehadm.ru
Сравнение структур и интерфейсов

- Структуры используются для хранения данных и представления объектов. Они могут содержать поля и методы, которые работают с этими полями.
- Интерфейсы используются для определения поведения. Они позволяют реализовывать полиморфизм, что значит, что вы можете работать с объектами разных типов через один и тот же интерфейс.

Структуры:
Структуры (struct) – это пользовательские типы данных, которые позволяют группировать несколько связанных переменных (поля) в одну сущность. Структуры часто используются для представления объектов или сущностей с определенным набором характеристик.
C-like:
package main

import (
 "fmt"
)

// Определяем структуру для представления человека
type Person struct {
 Name string
 Age  int
}

func main() {
 // Создаем экземпляр структуры Person
 p1 := Person{Name: "Alice", Age: 30}
 p2 := Person{Name: "Bob", Age: 25}

 // Выводим данные о людях
 fmt.Printf("%s is %d years old.n", p1.Name, p1.Age)
 fmt.Printf("%s is %d years old.n", p2.Name, p2.Age)
}

Интерфейсы:
Интерфейсы (interface) – это абстрактные типы, которые определяют набор методов, но не содержат их реализаций. Интерфейсы позволяют создавать более гибкие и расширяемые архитектуры.
C-like:
package main

import (
 "fmt"
)

// Определяем интерфейс для объектов, которые могут представлять себя
type Describable interface {
 Describe() string
}

// Определяем структуру Car, которая реализует интерфейс Describable
type Car struct {
 Brand string
 Model string
}

func (c Car) Describe() string {
 return fmt.Sprintf("Car Brand: %s, Model: %s", c.Brand, c.Model)
}

// Определяем структуру Person, которая также реализует интерфейс Describable
type Person struct {
 Name string
 Age  int
}

func (p Person) Describe() string {
 return fmt.Sprintf("Person Name: %s, Age: %d", p.Name, p.Age)
}

func PrintDescription(d Describable) {
 fmt.Println(d.Describe())
}

func main() {
 c := Car{Brand: "Toyota", Model: "Corolla"}
 p := Person{Name: "Alice", Age: 30}

 PrintDescription(c) // Выводит информацию о машине
 PrintDescription(p) // Выводит информацию о человеке
}
 
Back
Top