Suntikan kebergantungan dilaksanakan dalam Go menggunakan konteks.Konteks, membolehkan kami menyediakan kebergantungan secara dinamik tanpa mengubah tandatangan fungsi, sekali gus meningkatkan kebolehujian dan kebolehselenggaraan. Langkah pelaksanaan khusus: Buat konteks dan simpan kebergantungan (contohnya: ctx = context.WithValue(context.Background(), "user", &User{Name: "John Doe"})); : pengguna := ctx.Value("pengguna").(*Pengguna)). Kelebihan suntikan kebergantungan termasuk: kebolehujian: mudah untuk mengejek kebergantungan dan meningkatkan kebolehpercayaan ujian: pelaksanaan kebergantungan boleh diubah tanpa mengubah fungsi: kebergantungan yang berbeza boleh digunakan dalam konteks yang berbeza;
Suntikan ketergantunganialah corak reka bentuk yang membolehkan kami menyediakan kebergantungan secara dinamik tanpa mengubah tandatangan fungsi. Ini menjadikannya lebih mudah untuk menguji dan mengekalkan kod anda.
Dalam bahasa Go, anda boleh menggunakancontext.Context
untuk melaksanakan suntikan pergantungan.context.Context
ialah stor nilai kunci yang boleh dilampirkan data sewenang-wenangnya.context.Context
来实现依赖注入。context.Context
是一个键值存储,可以附加任意数据。
下面是一个使用context.Context
进行依赖注入的示例:
package main import ( "context" "fmt" ) type User struct { Name string } func main() { // 创建一个上下文,并用用户数据初始化它 ctx := context.WithValue(context.Background(), "user", &User{Name: "John Doe"}) // 从上下文中获取用户数据 user := ctx.Value("user").(*User) fmt.Println(user.Name) // 输出 "John Doe" }
在上面的示例中,我们创建一个上下文ctx
,并在其中存储了一个User
结构体的实例。然后,我们从上下文中获取User
rrreee
Dalam contoh di atas, kami mencipta konteksUser
disimpan di dalamnya. Kami kemudian mendapatkan contoh
Pengguna
daripada konteks dan mencetak namanya.
Atas ialah kandungan terperinci Suntikan kebergantungan dalam kitaran hayat fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!