container

package
v1.9.14 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 22, 2024 License: MIT Imports: 3 Imported by: 0

README

Контейнер объектов.

Под капотом используется https://pkg.go.dev/go.uber.org/dig, который реализует стратегию, "ленивого" создания объектов, т.е. только по востребованности и создание только один раз.

Реализует интерфейс Container.

type Container interface {
	Provide(interface{}) error
	Provides(...interface{}) error
	Invoke(interface{}) error
}
  • Provide - добавляет конструктор объекта в контейнер;
  • Provides - тоже самое что Provide, только сразу для пачки конструкторов;
  • Invoke - метод для вызова функций с внедренными зависимостями.

Все методы, в случае не удачи, возвращают ошибку.

Пример

func example(c Container) {
  if err := c.Provide(NewLogger); err != nil {
       panic(err)
   }

   err := c.Invoke(func(l Logger) {...})
   if err != nil {
       panic(err)
   }
}

Контейнер не является потокобезопасным.

Хелперы.

Пакет предоставляет хелпер Get[T any](container Container) (T, error) который позволяет получить определенный объект непосредственно из контейнера, без вызова метода Invoke. Считается устаревшим и будет удален в последующих релизах, вместо него используйте метод Run в объекте компонента.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Get

func Get[T any](container Container) (T, error)

Deprecated

Types

type Container

type Container interface {
	Provide(interface{}) error
	Provides(...interface{}) error
	Invoke(interface{}) error
}

func New

func New() (Container, error)

type DigDecorator

type DigDecorator struct {
	Dig *dig.Container
}

func NewDigDecorator

func NewDigDecorator() (*DigDecorator, error)

func (*DigDecorator) Invoke

func (container *DigDecorator) Invoke(function interface{}) error

func (*DigDecorator) Provide

func (container *DigDecorator) Provide(constructor interface{}) error

func (*DigDecorator) Provides

func (container *DigDecorator) Provides(constructors ...interface{}) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL