首页 > 其他分享 >go 的 wire 依赖注入

go 的 wire 依赖注入

时间:2022-12-11 05:55:05浏览次数:37  
标签:dao wire Service Dao Db 依赖 func go

go 文件

package main

import (
	"fmt"

	"github.com/google/wire"
)

var DbSet = wire.NewSet(NewDb, NewDao)

type Db struct {
	connect string
}

type Dao struct {
	DbObj Db
}

type Service struct {
	DaoObj Dao
}

func NewDb(conn string) Db {
	return Db{
		connect: conn,
	}
}

func NewDao(d Db) Dao {
	return Dao{
		DbObj: d,
	}
}

func NewService(dao Dao) Service {
	return Service{
		DaoObj: dao,
	}
}

func (s Service) Start() {
	fmt.Printf("服务器启动成功 %s\n", s.DaoObj.DbObj.connect)
}

func main() {
	db := NewDb("mysql 连接成功")
	dao := NewDao(db)
	s := NewService(dao)
	s.Start()
}

wire 文件

package main

import "github.com/google/wire"

func InitService(conn string) Service {
	panic(wire.Build(DbSet, NewService))
}

执行 wire 命令,生成新文件。

标签:dao,wire,Service,Dao,Db,依赖,func,go
From: https://www.cnblogs.com/rush-peng/p/16972799.html

相关文章

  • django框架(部分讲解)
    静态文件配置1.编写一个用户登录页面2.静态文件 不怎么经常变化的文件主要针对html文件所使用的到的各种资源 css文件、js文件、img文件、第三方框架文件 djan......
  • django02
    .静态文件配置不经常变化的文件,主要针对html文件所使用到的各种资源就是静态文件(css文件、js文件、img文件、第三方框架文件)针对静态文件资源需创建一个static目录统......
  • Go语言基础之运算符
    运算符运算符用于在程序运行时执行数学或逻辑运算。Go语言内置的运算符有:算术运算符关系运算符逻辑运算符位运算符赋值运算符算术运算符运算符描述......
  • 把时间沉淀下来 | Kagol 的 2022 年终总结
    现代管理学之父德鲁克在其经典著作《卓有成效的管理者》中对时间有一段精妙的论述,其要点如下:时间是一项限制因素,任何生产程序的产出量,都会受到最稀有资源的制约,而时间就......
  • Go-14 Golang语言中 函数详解之defer延迟处理函数和return的结合使用
    packagemain//defer延迟处理函数和return的结合运用/* 按照下面的示例作了一个总结,文字结合下面的代码更容易理解 总结一下规则: defer里面的变量必须与函数定义的......
  • 静态文件配置,from表单,request对象,pycharm连接数据库,Django连接数据库,初识ORM
    目录静态文件配置,from表单,request对象,pycharm连接数据库,Django连接数据库,初识ORM今日内容概要今日内容详细静态文件配置静态文件相关配置form表单request对象pycharm连接数......
  • Go语言之基本数据类型
    Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。Go语言的基本类型和其他语言大同小异。基本数......
  • MongoDB安全加固,防止数据库攻击删除勒索威胁
    前言:今天发现前段时间自己搭建的一个系统的MongoDB数据找不到了,觉得很奇妙,然后登上MongoDB数据库发现多了一个名为READ__ME_TO_RECOVER_YOUR_DATA的数据库,里面还有一......
  • go使用连接池连接clickhouse
    packagemainimport("database/sql""fmt""time"_"github.com/ClickHouse/clickhouse-go")//连接池的最大数量constmaxConnections=10......
  • go使用tcp实现两边通讯
    描述:客户端可以接受服务端信息&写数据导服务端服务端也一样服务端代码packagemainimport( "bufio" "fmt" "io" "net" "os" "strings")funcprocess(conn......