1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/go-baa-baa

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
di.go 767
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
coldstar Отправлено 28.04.2017 04:14 6b3da42
package baa
import (
"sync"
)
// DIer is an interface for baa dependency injection
type DIer interface {
Set(name string, v interface{})
Get(name string) interface{}
}
// DI provlider a dependency injection service for baa
type DI struct {
store map[string]interface{}
mutex sync.RWMutex
}
// NewDI create a DI instance
func NewDI() DIer {
d := new(DI)
d.store = make(map[string]interface{})
return d
}
// Set register a di
// baa dependency injection must be the special interface
func (d *DI) Set(name string, v interface{}) {
d.mutex.Lock()
d.store[name] = v
d.mutex.Unlock()
}
// Get fetch a di by name, return nil when name not set.
func (d *DI) Get(name string) interface{} {
d.mutex.RLock()
v := d.store[name]
d.mutex.RUnlock()
return v
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/go-baa-baa.git
git@api.gitlife.ru:oschina-mirror/go-baa-baa.git
oschina-mirror
go-baa-baa
go-baa-baa
master