Bahasa Go secara asli menyokong suntikan pergantungan, yang boleh meningkatkan modulariti dan kebolehujian. Langkah-langkah khusus termasuk: 1. Tentukan antara muka 2. Buat struktur dan benamkan antara muka 3. Suntikan kebergantungan melalui pembina. Kes praktikal: Dengan menyuntik kebergantungan pangkalan data ke dalam perkhidmatan pengguna, data pengguna boleh diperolehi. . Ia melakukan ini dengan menghantar kebergantungan kepada objek dan bukannya membiarkan objek mencipta kebergantungan itu sendiri.
Bahasa Go menyediakan sokongan suntikan pergantungan secara asli dan tidak memerlukan perpustakaan pihak ketiga. Begini cara menggunakannya:
1. Tentukan antara muka
type Repository interface { GetByID(id int) (*User, error) }
2. Cipta struktur dan benamkan antara muka
type UserService struct { repo Repository }
3. Gunakan pembina untuk menyuntik kes
Pertimbangkan Aplikasi yang perlu mendapatkan pengguna daripada pangkalan data.
Pakej Pangkalan Data:func NewUserService(repo Repository) *UserService {
return &UserService{repo}
}
package db
import "fmt"
// User represents a user in the database.
type User struct {
ID int
Name string
Email string
Address string
}
// GetByID retrieves a user by its ID.
func GetByID(id int) (*User, error) {
// In a real application, this would query a database.
users := []User{
{1, "John Doe", "john.doe@example.com", "123 Main Street"},
}
for _, u := range users {
if u.ID == id {
return &u, nil
}
}
return nil, fmt.Errorf("user not found: %d", id)
}
package service import "github.com/example/app/db" // UserService provides methods for managing users. type UserService struct { repo db.Repository } func NewUserService(repo db.Repository) *UserService { return &UserService{repo} } // GetUserByID retrieves a user by its ID. func (s *UserService) GetUserByID(id int) (*db.User, error) { return s.repo.GetByID(id) }
Atas ialah kandungan terperinci Mendedahkan mekanisme suntikan pergantungan dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!