本文整理汇总了Golang中github.com/codegangsta/inject.New函数的典型用法代码示例。如果您正苦于以下问题:Golang New函数的具体用法?Golang New怎么用?Golang New使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了New函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: Test_InjectorSetParent
func Test_InjectorSetParent(t *testing.T) {
injector := inject.New()
injector.MapTo("another dep", (*SpecialString)(nil))
injector2 := inject.New()
injector2.SetParent(injector)
expect(t, injector2.Get(inject.InterfaceOf((*SpecialString)(nil))).IsValid(), true)
}
开发者ID:Blystad,项目名称:deis,代码行数:9,代码来源:inject_test.go
示例2: main
//结论:Apply方法是用于对struct的字段进行注入,参数为指向底层类型为结构体的指针。
//可注入的前提是:字段必须是导出的(也即字段名以大写字母开头),并且此字段的tag设置为`inject`
func main() {
s := TestStruct{}
inj := inject.New()
inj.Map("陈一回")
inj.MapTo("男", (*SpecialString)(nil))
inj2 := inject.New()
inj2.Map(20)
inj.SetParent(inj2)
inj.Apply(&s)
fmt.Println("s.Name =", s.Name)
fmt.Println("s.Gender =", s.Gender)
fmt.Println("s.Age =", s.Age)
fmt.Println("s.Nick =", s.Nick)
fmt.Println("s.uid =", s.uid)
}
开发者ID:HelloKevinTian,项目名称:golang_sample,代码行数:17,代码来源:inject.go
示例3: MakeHandler
func (ae *App) MakeHandler(handlers ...interface{}) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
child := inject.New()
child.SetParent(ae.Injector)
child.MapTo(w, (*http.ResponseWriter)(nil))
child.Map(r)
handlerLoop:
for _, reqProcessor := range handlers {
result, err := child.Invoke(reqProcessor)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintf(os.Stderr, "error in url %v: %v\n", r.URL, err)
return
}
if len(result) == 0 {
continue
} else {
valAsInterface := result[0].Interface()
if resp, ok := valAsInterface.(HTTPResponse); ok {
err := resp.Render(w)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintln(os.Stderr, "error: %v", err)
}
if reflect.TypeOf(valAsInterface) != reflect.TypeOf(ChainHttpResponse{}) {
break handlerLoop
}
}
}
}
}
}
开发者ID:tychoish,项目名称:evergreen,代码行数:33,代码来源:app.go
示例4: TestInjectImplementors
func TestInjectImplementors(t *testing.T) {
injector := inject.New()
g := &Greeter{"Jeremy"}
injector.Map(g)
expect(t, injector.Get(inject.InterfaceOf((*fmt.Stringer)(nil))).IsValid(), true)
}
开发者ID:Blystad,项目名称:deis,代码行数:7,代码来源:inject_test.go
示例5: wrap
func wrap(f interface{}) func(*cli.Context) {
return func(ctx *cli.Context) {
if ctx.GlobalBool("debug") {
log.SetOutputLevel(log.Ldebug)
}
sockPath := filepath.Join(GOSUV_HOME, "gosuv.sock")
if err := testConnection("unix", sockPath); err != nil {
log.Fatal(err)
}
conn, err := connect(ctx)
if err != nil {
log.Fatal(err)
}
defer conn.Close()
programClient := pb.NewProgramClient(conn)
gosuvClient := pb.NewGoSuvClient(conn)
inj := inject.New()
inj.Map(programClient)
inj.Map(gosuvClient)
inj.Map(ctx)
inj.Invoke(f)
}
}
开发者ID:mehulsbhatt,项目名称:gosuv,代码行数:26,代码来源:gosuv.go
示例6: Test_InjectorInvoke
func Test_InjectorInvoke(t *testing.T) {
injector := inject.New()
expect(t, injector == nil, false)
dep := "some dependency"
injector.Map(dep)
dep2 := "another dep"
injector.MapTo(dep2, (*SpecialString)(nil))
dep3 := make(chan *SpecialString)
dep4 := make(chan *SpecialString)
typRecv := reflect.ChanOf(reflect.RecvDir, reflect.TypeOf(dep3).Elem())
typSend := reflect.ChanOf(reflect.SendDir, reflect.TypeOf(dep4).Elem())
injector.Set(typRecv, reflect.ValueOf(dep3))
injector.Set(typSend, reflect.ValueOf(dep4))
_, err := injector.Invoke(func(d1 string, d2 SpecialString, d3 <-chan *SpecialString, d4 chan<- *SpecialString) {
expect(t, d1, dep)
expect(t, d2, dep2)
expect(t, reflect.TypeOf(d3).Elem(), reflect.TypeOf(dep3).Elem())
expect(t, reflect.TypeOf(d4).Elem(), reflect.TypeOf(dep4).Elem())
expect(t, reflect.TypeOf(d3).ChanDir(), reflect.RecvDir)
expect(t, reflect.TypeOf(d4).ChanDir(), reflect.SendDir)
})
expect(t, err, nil)
}
开发者ID:Blystad,项目名称:deis,代码行数:26,代码来源:inject_test.go
示例7: Injs
func Injs(args ...interface{}) Injector {
inj := inject.New()
for _, v := range args {
inj.Map(v)
}
return inj
}
开发者ID:wzshiming,项目名称:slicefunc,代码行数:7,代码来源:slicefunc.go
示例8: JoinBy
// 连接函数 返回error 结束 下一次传递
func JoinBy(t interface{}, fs ...interface{}) interface{} {
val := reflect.ValueOf(t)
if val.Kind() != reflect.Func {
return nil
}
for k, v := range fs {
c := toCaller(v)
if c == nil {
return nil
}
fs[k] = c
}
typ := val.Type()
r := reflect.MakeFunc(typ, func(args []reflect.Value) (results []reflect.Value) {
inj := inject.New()
for _, v := range args {
inj.Set(v.Type(), v)
}
inj = SliceFunc(inj, fs)
for i := 0; i != typ.NumOut(); i++ {
results = append(results, inj.Get(typ.Out(i)))
}
return
})
return r.Interface()
}
开发者ID:wzshiming,项目名称:slicefunc,代码行数:30,代码来源:slicefunc.go
示例9: Test_Static_Options_Logging
func Test_Static_Options_Logging(t *testing.T) {
response := httptest.NewRecorder()
var buffer bytes.Buffer
m := &Martini{Injector: inject.New(), action: func() {}, logger: log.New(&buffer, "[martini] ", 0)}
m.Map(m.logger)
m.Map(defaultReturnHandler())
opt := StaticOptions{}
m.Use(Static(currentRoot, opt))
req, err := http.NewRequest("GET", "http://localhost:3000/martini.go", nil)
if err != nil {
t.Error(err)
}
m.ServeHTTP(response, req)
expect(t, response.Code, http.StatusOK)
expect(t, buffer.String(), "[martini] [Static] Serving /martini.go\n")
// Now without logging
m.Handlers()
buffer.Reset()
// This should disable logging
opt.SkipLogging = true
m.Use(Static(currentRoot, opt))
m.ServeHTTP(response, req)
expect(t, response.Code, http.StatusOK)
expect(t, buffer.String(), "")
}
开发者ID:hero007asd,项目名称:martini,代码行数:32,代码来源:static_test.go
示例10: New
// create new helper, this object will be used for globar service for martini middleware
func New() *MartiniHelper {
this := &MartiniHelper{inject.New()}
retHandler := martini.New().Get(reflect.TypeOf(martini.ReturnHandler(nil))).Interface()
// retHandler := martini.defaultReturnHandler()
this.Map(retHandler)
return this
}
开发者ID:win-t,项目名称:karambie,代码行数:8,代码来源:wrapper.go
示例11: Trigger
func (e *eventManager) Trigger(eventName EventType, data map[string]interface{}) {
e.Lock()
defer e.Unlock()
handlers, ok := e.events[eventName]
wildcardHandlers, wok := e.events[AllEvents]
if !ok && !wok {
return
}
event := Event{eventName, data}
c := inject.New()
c.SetParent(e.injector)
c.Map(event)
if ok {
for _, handler := range handlers {
c.Invoke(handler.Interface())
}
}
if wok {
for _, handler := range wildcardHandlers {
c.Invoke(handler.Interface())
}
}
}
开发者ID:Term1nal,项目名称:squircy2,代码行数:27,代码来源:event.go
示例12: NewApp
func NewApp() *App {
return &App{
TemplateFuncs: make(map[string]interface{}),
TemplateCache: make(map[string]*template.Template),
CacheTemplates: true,
Injector: inject.New(),
}
}
开发者ID:tychoish,项目名称:evergreen,代码行数:8,代码来源:app.go
示例13: createContext
func (m *Martini) createContext(res http.ResponseWriter, req *http.Request) *context {
c := &context{inject.New(), m.handlers, m.action, NewResponseWriter(res), 0}
c.SetParent(m)
c.MapTo(c, (*Context)(nil))
c.MapTo(c.rw, (*http.ResponseWriter)(nil))
c.Map(req)
return c
}
开发者ID:paultyng,项目名称:padlock-cloud,代码行数:8,代码来源:martini.go
示例14: Test_InjectorGet
func Test_InjectorGet(t *testing.T) {
injector := inject.New()
injector.Map("some dependency")
expect(t, injector.Get(reflect.TypeOf("string")).IsValid(), true)
expect(t, injector.Get(reflect.TypeOf(11)).IsValid(), false)
}
开发者ID:Blystad,项目名称:deis,代码行数:8,代码来源:inject_test.go
示例15: worker
func (w *WorkerConfig) worker(id string) {
injector := inject.New()
injector.SetParent(w.Injector)
for msg := range w.workQueue {
if msg.die {
break
}
job := msg.job
typ, ok := w.workerMapping[msg.job.Type]
if !ok {
err := UnknownWorkerError{job.Type}
w.scheduleRetry(job, err, true)
continue
}
w.trackJobStart(job, id)
// wrap Perform() in a function so that we can recover from panics
var err error
var worker interface{}
func() {
defer func() {
if r := recover(); r != nil {
err = newPanicError(r)
}
}()
workerVal := reflect.New(typ)
worker = workerVal.Interface()
if err = json.Unmarshal(*job.Args, worker); err != nil {
return
}
injector.Map(job)
if err = injector.Apply(worker); err != nil {
return
}
var res []reflect.Value
res, err = injector.Invoke(workerVal.MethodByName("Perform").Interface())
if err != nil {
return
}
if resErr := res[0].Interface(); resErr != nil && resErr.(error) != nil {
err = resErr.(error)
}
}()
if err != nil {
report := true
if checker, ok := worker.(ReportableErrorChecker); ok {
report = checker.ReportableError(err)
}
w.scheduleRetry(job, err, report)
}
w.trackJobFinish(job, id, err == nil)
}
w.done.Done()
}
开发者ID:DaleWebb,项目名称:readraptor,代码行数:56,代码来源:worker.go
示例16: main
func main() {
inj := inject.New()
inj.Map("Xargin")
inj.MapTo("男", (*SpecialString)(nil))
//inj.MapTo("男", (*SpecialString)(nil))
//inj.MapTo(10, (*MyInt)(nil))
inj.MapTo(10, (*MyInt)(nil))
inj.Map(1000)
inj.Invoke(say)
}
开发者ID:cch123,项目名称:test,代码行数:10,代码来源:inject.go
示例17: NewPacketContext
func NewPacketContext(pkt *Packet, ses *Session) IPacketContext {
c := &packetContext{
Injector: inject.New(),
index: 0,
}
c.Map(pkt)
c.Map(ses)
c.MapTo(c, (*IPacketContext)(nil))
return c
}
开发者ID:chogaths,项目名称:robin,代码行数:11,代码来源:context.go
示例18: Test_InjectorApply
func Test_InjectorApply(t *testing.T) {
injector := inject.New()
injector.Map("a dep").MapTo("another dep", (*SpecialString)(nil))
s := TestStruct{}
err := injector.Apply(&s)
expect(t, err, nil)
expect(t, s.Dep1, "a dep")
expect(t, s.Dep2, "another dep")
}
开发者ID:hasham2,项目名称:gopherapp,代码行数:12,代码来源:inject_test.go
示例19: main
func main() {
ij := inject.New()
ij.Map(20)
ij.MapTo("Good Morning", (*MyString)(nil))
ij1 := inject.New()
ij1.Map("Steven")
ij.SetParent(ij1)
ij.Invoke(Hello)
fmt.Println(inject.InterfaceOf((*MyString)(nil)))
team := MyStruct{}
ij2 := inject.New()
ij2.Map("Liverpool LFC")
ij2.MapTo("England", (*MyString)(nil))
ij2.Apply(&team)
fmt.Printf("TEAM NAME: %s \n", team.Name)
fmt.Printf("TEAM TEAM: %s \n", team.Team)
fmt.Printf("TEAM LOCATION: %s \n", team.Location)
}
开发者ID:pyanfield,项目名称:martini_demos,代码行数:23,代码来源:main.go
示例20: NewSession
func NewSession() *Session {
env := make(map[string]string)
for _, key := range []string{"PATH"} {
env[key] = os.Getenv(key)
}
s := &Session{
inj: inject.New(),
alias: make(map[string][]string),
dir: Dir(""),
Stdout: os.Stdout,
Stderr: os.Stderr,
Env: env,
}
return s
}
开发者ID:ksarch-saas,项目名称:cc,代码行数:15,代码来源:sh.go
注:本文中的github.com/codegangsta/inject.New函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论