package boot import "sort" type resource struct { init initFunc start startFunc config ResourceConfig } func newResource(i initFunc, s startFunc, op ...ConfigResource) Resource { config := ResourceConfig{} for _, elem := range op { elem(&config) } return &resource{ init: i, start: s, config: config, } } func (i *resource) Init() error { if i.init != nil { return i.init() } return nil } func (i *resource) Start() error { if i.start != nil { return i.start() } return nil } func (i *resource) Config() ResourceConfig { return i.config } type ResourceConfig struct { Name string } func SetResourceName(name string) ConfigResource { return func(config *ResourceConfig) { config.Name = name } } func sortResourceType(res []ResourceType) []ResourceType { if res == nil || len(res) == 0 { return []ResourceType{} } sort.Sort(SortedResource(res)) return res } /** 排序资源 */ type SortedResource []ResourceType func (s SortedResource) Len() int { return len(s) } func (s SortedResource) Less(i, j int) bool { return s[i] < s[j] } func (s SortedResource) Swap(i, j int) { s[i], s[j] = s[j], s[i] }