... > GO > Встраиваемые типы в...

Встраиваемые типы в GO

НАВИГАЦИЯ ПО СТРАНИЦЕ

пример встраивания Встраивание нескольких структу Встраивание интерфейсов

В GO можно использовать встраиваемые типы, также известные как вложенные или встроенные структуры. Это механизм, который позволяет встраивать один тип данных в другой.

Простой пример встраивания:

package main

import "fmt"

// Определение структуры Person
type Person struct {
	Name string
	Age  int
}

// Определение структуры Employee с встраиванием Person
type Employee struct {
	Person
	Position string
}

func main() {
	// Создание экземпляра структуры Employee
	employee := Employee{
		Person:   Person{Name: "John", Age: 30},
		Position: "Developer",
	}

	// Обращение к полям встраиваемой структуры Person
	fmt.Println("Name:", employee.Name)
	fmt.Println("Age:", employee.Age)

	// Обращение к полю структуры Employee
	fmt.Println("Position:", employee.Position)
}

Встраивание нескольких структур:

package main

import "fmt"

// Определение структуры Address
type Address struct {
	City  string
	State string
}

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

func main() {
	// Создание экземпляра структуры Person
	person := Person{
		Name:    "Alice",
		Age:     25,
		Address: Address{City: "New York", State: "NY"},
	}

	// Обращение к полям встраиваемой структуры Address
	fmt.Println("City:", person.City)
	fmt.Println("State:", person.State)

	// Обращение к полям структуры Person
	fmt.Println("Name:", person.Name)
	fmt.Println("Age:", person.Age)
}

Встраивание интерфейсов:

package main

import "fmt"

// Определение интерфейса Writer
type Writer interface {
	Write()
}

// Определение структуры Person с встраиванием интерфейса Writer
type Person struct {
	Name string
	Writer
}

// Реализация метода Write для структуры Person
func (p Person) Write() {
	fmt.Println("Writing:", p.Name)
}

func main() {
	// Создание экземпляра структуры Person с встраиванием интерфейса Writer
	person := Person{Name: "Bob"}

	// Вызов метода Write через встроенный интерфейс
	person.Write()
}

Встраиваемые типы предоставляют удобный способ создания композиции структур и интерфейсов в GO, что способствует повторному использованию кода и улучшению его читаемости.