123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package main
- import "fmt"
- //举例说明:
- // 这个例子完成一个旅游,旅游需要依赖一个交通工具和旅游目的地,旅行完再发一个朋友圈
- // 旅行结构体
- type Trip struct {
- Msg string
- TrafficTools *Airplane //交通工具,举例飞机
- Destination *DunHuang //目的地,举例敦煌
- }
- // 旅游的provider
- func NewTrip(trafficTools *Airplane, destination *DunHuang) *Trip {
- return &Trip{
- TrafficTools: trafficTools,
- Destination: destination,
- }
- }
- // 旅行,发朋友圈的操作
- func (t *Trip) CircleOfFriends() {
- fmt.Printf("我坐%s去%s旅游了,好开心\n", t.TrafficTools.Name, t.Destination.Name)
- }
- // 交通工具相关
- type Airplane struct {
- Name string
- }
- func NewAirplane() *Airplane {
- return &Airplane{
- Name: "波音飞机",
- }
- }
- // 目的地相关
- type DunHuang struct {
- Name string
- }
- func NewDunHuang() *DunHuang {
- return &DunHuang{
- Name: "敦煌",
- }
- }
- // 手动依赖注入
- func HandleDI() {
- dh := NewDunHuang()
- air := NewAirplane()
- trip := NewTrip(air, dh)
- trip.CircleOfFriends()
- }
- func main() {
- //调用手动依赖注入
- HandleDI()
- //调用wire生成的依赖注入
- GetTrip().CircleOfFriends()
- }
|