main.go
package main import "fmt" type DemoData struct { Name string } func NewDemoData(name string) DemoData { data := DemoData{} data.Name = name return data } func (data DemoData) DemoStart() { fmt.Println("m.Player.Name+++++", data.Name) } func main() { //monster := models.NewMonster() //player := models.NewPlayer("dj") //mission := models.NewMission(player, monster) //mission.Start() // mission := InitMission("dj") // mission.DemoStart() // mission.Start() }
wire.go
//go:build wireinject // +build wireinject package main import ( "github.com/google/wire" ) func InitMission(name string) DemoData { wire.Build(NewDemoData) return DemoData{} }
运行 wire 生成wire_gen.go
// Code generated by Wire. DO NOT EDIT. //go:generate go run github.com/google/wire/cmd/wire //go:build !wireinject // +build !wireinject package main // Injectors from wire.go: func InitMission(name string) DemoData { demoData := NewDemoData(name) return demoData }
执行 go run main.go wire_gen.go