MST

星途 面试题库

面试题:Go中运用接口进行依赖注入的基本实现

请使用Go语言实现一个简单的依赖注入示例,假设有一个服务接口`UserService`,包含方法`GetUser`,和一个实现了该接口的结构体`UserServiceImpl`。另外有一个`UserController`结构体,它依赖`UserService`接口,通过依赖注入的方式将`UserServiceImpl`注入到`UserController`中,并在`UserController`的`HandleRequest`方法中调用`UserService`的`GetUser`方法。
45.6万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import "fmt"

// UserService 定义服务接口
type UserService interface {
    GetUser() string
}

// UserServiceImpl 实现UserService接口
type UserServiceImpl struct{}

func (u *UserServiceImpl) GetUser() string {
    return "User from UserServiceImpl"
}

// UserController 结构体,依赖UserService接口
type UserController struct {
    userService UserService
}

// NewUserController 通过依赖注入创建UserController实例
func NewUserController(service UserService) *UserController {
    return &UserController{
        userService: service,
    }
}

// HandleRequest 处理请求,调用UserService的GetUser方法
func (uc *UserController) HandleRequest() {
    user := uc.userService.GetUser()
    fmt.Println("Handling request, got user:", user)
}

你可以使用以下方式调用:

func main() {
    // 创建UserServiceImpl实例
    userService := &UserServiceImpl{}
    // 通过依赖注入创建UserController实例
    userController := NewUserController(userService)
    // 调用HandleRequest方法
    userController.HandleRequest()
}