Go工程化 - 依赖注入
package main
import (
"fmt"
)
// 定义接口
type Greeter interface {
Greet() string
}
// 实现接口的具体结构体
type EnglishGreeter struct{}
// EnglishGreeter 实现 Greeter 接口
func (eg EnglishGreeter) Greet() string {
return "Hello!"
}
// 依赖注入的函数,接受 Greeter 接口类型的参数
func Greet(g Greeter) {
fmt.Println(g.Greet())
}
func main() {
// 创建 EnglishGreeter 的实例
englishGreeter := EnglishGreeter{}
// 调用 Greet 函数,并将 englishGreeter 作为依赖传递
Greet(englishGreeter)
}
这段代码定义了一个Greeter
接口和一个实现了该接口的EnglishGreeter
结构体。Greet
函数接受一个Greeter
类型的参数,该参数通过依赖注入的方式接收实现了Greeter
接口的对象。这样的设计使得Greet
函数可以使用任何实现了Greeter
接口的对象,从而实现了解耦和可测试性。在main
函数中,我们创建了EnglishGreeter
的实例,并将其传递给Greet
函数,输出了问候语。这是一个简单的依赖注入示例。
评论已关闭