Sobes.tech
Back to questions
Junior — Middle
85

Можешь привести пример ситуации, когда использование интерфейсов помогает структурировать код?

Answer from AI

sobes.tech AI

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

Пример: допустим, у вас есть разные типы хранилищ данных — база данных, кэш, файловая система. Можно определить интерфейс Storage с методом Save(data string) error.

package main
import "fmt"

// Интерфейс
type Storage interface {
    Save(data string) error
}

// Реализация для базы данных
type DBStorage struct{}
func (db DBStorage) Save(data string) error {
    fmt.Println("Сохраняем в базу данных:", data)
    return nil
}

// Реализация для файловой системы
type FileStorage struct{}
func (fs FileStorage) Save(data string) error {
    fmt.Println("Сохраняем в файл:", data)
    return nil
}

func process(s Storage, data string) {
    s.Save(data)
}

func main() {
    db := DBStorage{}
    file := FileStorage{}

    process(db, "данные для БД")
    process(file, "данные для файла")
}

Такой подход позволяет писать код, который работает с абстракцией Storage, не завися от конкретной реализации, что упрощает поддержку и тестирование.