go-summer Golang的简单IOC框架 go-summer

polaris • 2348 次点击    
这是一个分享于 的项目,其中的信息可能已经有所发展或是发生改变。
Summer是一个Golang的简单的IOC框架。 实现了基本的依赖注入,配置文件属性注入等。 易扩展,简单。 简单的示例代码如下: <pre class="brush:cpp; toolbar: true; auto-links: false;">package main import ( &#34;github.com/cocotyty/summer&#34; &#34;fmt&#34; ) func init() { summer.Toml(` [printer] prefix=&#34;[PRINT]&#34;`) summer.Put(&amp;A{}) summer.Add(&#34;lay&#34;, &amp;B{}) summer.Put(&amp;Cat{}) summer.Put(&amp;Printer{}) summer.Start() } func main() { a := summer.GetStoneWithName(&#34;a&#34;).(*A) a.Call() } type A struct { // $ means you want to get a stone&#39;s field , it happened usually after stones inited BoyName string `sm:&#34;$.lay.Name&#34;` B       *B `sm:&#34;lay&#34;` // yes,we support interface ,tag is stone&#39;s name C       C `sm:&#34;cat&#34;` } func (a *A)Call() { a.C.Print() fmt.Println(&#34;hi ,I am A&#34;, &#34;bodys name:&#34;, a.BoyName) fmt.Println(a.B) } type B struct { Name string } func (this *B)Init() { this.Name = &#34;Boy!&#34; } type C interface { Print() } type Printer struct { // if you already set the toml plugin config, you can use the #  ,to get value from toml, // # is toml plugin&#39;s name // toml plugin will work after directly dependency resolved,before init Prefix string `sm:&#34;#.printer.prefix&#34;` } func (printer *Printer)Print(str string) { fmt.Println(printer.Prefix + str) } type Cat struct { // * is mostly used tag,summer will find by the field&#39;s name  or the field&#39;s type or both Printer *Printer `sm:&#34;*&#34;` } func (c *Cat)Ready() { fmt.Println(&#34;my name is cat,i am ready.&#34;) } func (c *Cat)Print() { c.Printer.Print(&#34;Little Cat&#34;) }</pre>
授权协议:
Apache
开发语言:
Google Go 查看源码»
操作系统:
跨平台
2348 次点击  
加入收藏 微博
1 回复  |  直到
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传