Dalam Go, corak suntikan kebergantungan (DI) dilaksanakan melalui hantaran parameter fungsi, termasuk hantaran nilai dan hantaran penunjuk. Dalam corak DI, kebergantungan biasanya diluluskan sebagai petunjuk untuk meningkatkan penyahgandingan, mengurangkan pertikaian kunci dan menyokong kebolehujian. Dengan menggunakan penunjuk, fungsi itu dipisahkan daripada pelaksanaan konkrit kerana ia hanya bergantung pada jenis antara muka. Hantaran penunjuk juga mengurangkan overhed menghantar objek besar, dengan itu mengurangkan pertikaian kunci. Selain itu, corak DI memudahkan untuk menulis ujian unit untuk fungsi yang menggunakan corak DI kerana kebergantungan boleh dipermainkan dengan mudah. . Dalam Go, DI biasanya dilaksanakan melalui hantaran hujah fungsi.
Jenis parameter passing
Terdapat dua jenis fungsi parameter passing dalam Go:
Value passing: Parameter variable ialah salinan nilai asal dan sebarang perubahan pada parameter variable tidak akan menjejaskan nilai asal.
Hantaran penunjuk:Pembolehubah parameter ialah penunjuk kepada nilai asal dan perubahan pada pembolehubah parameter juga akan mempengaruhi nilai asal.
Parameter lulus dalam corak DI
Petunjuk yang lulus boleh mengurangkan overhed objek besar yang melepasi, dengan itu mengurangkan pertengkaran kunci.
Sokongan untuk kebolehujian:Lebih mudah untuk menulis ujian unit untuk fungsi menggunakan corak DI kerana kebergantungan boleh dipermainkan dengan mudah.
type UserService struct { userRepository UserRepository } func (s *UserService) CreateUser(user *User) error { return s.userRepository.Create(user) }
func main() { // 创建 UserRepository 实例 userRepository := NewUserRepository() // 创建 UserService 实例并注入 UserRepository userService := UserService{ userRepository: userRepository, } // 使用 UserService user := &User{Name: "John"} err := userService.CreateUser(user) if err != nil { // 处理错误 } }
Corak DI dalam hantaran hujah fungsi ialah teknik yang berkuasa dan fleksibel dalam Go untuk mengurus kebergantungan antara objek. Ia meningkatkan penyahgandingan, mengurangkan perbalahan kunci, dan menyokong kebolehujian.
Atas ialah kandungan terperinci Corak suntikan kebergantungan dalam lulus parameter fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!