Suntikan kebergantungan dalam pengendalian ralat fungsi dalam Go boleh mencapai pengendalian ralat yang lebih fleksibel dan boleh diuji. 1. Buat Konteks dan jenis ralat tersuai; 2. Dapatkan dan kendalikan ralat daripada Konteks 3. Gunakan Konteks dan operasi pangkalan data pengendalian ralat dalam pertempuran sebenar;
Suntikan Ketergantungan dalam Pengendalian Ralat Fungsi Bahasa Go
Suntikan Ketergantungan ialah corak reka bentuk yang membolehkan kebergantungan (biasanya perkhidmatan atau modul luaran) dihantar ke fungsi dan bukannya dikodkan keras di dalam fungsi kebergantungan ini. Pendekatan ini amat berguna dalam pengendalian ralat, kerana ia membolehkan kod yang lebih fleksibel dan boleh diuji.
Dalam bahasa Go, anda boleh menggunakan jenis [context.Context
](https://godoc.org/context#Context) untuk suntikan kebergantungan. context.Context
menyediakan mekanisme untuk menghantar maklumat berkaitan permintaan dengan mudah tanpa menghantarnya secara eksplisit sebagai parameter fungsi. context.Context
](https://godoc.org/context#Context) 类型进行依赖注入。context.Context
提供了一种轻松传递请求相关信息的机制,而无需显式地将它们作为函数参数传递。
实施
要实现依赖注入,请创建 context.Context
及其 error
类型:
package main import ( "context" "errors" ) type myError struct { message string } func (e myError) Error() string { return e.message } var ( ErrMyError1 = myError{"my error 1"} ErrMyError2 = myError{"my error 2"} ) func main() { ctx := context.Background() err := handleError(ctx) if err != nil { // 处理错误 } }
接下来,在 handleError
函数中,从 Context
中获取错误并处理它:
func handleError(ctx context.Context) error { err := ctx.Err() if err != nil { // 处理错误 } return nil }
实战案例
在一个需要从数据库检索数据的函数中,可以使用依赖注入处理错误:
func getFromDB(ctx context.Context) ([]byte, error) { // 处理错误 }
在调用 getFromDB
函数时,使用 context.WithValue
设置错误类型:
ctx := context.Background() ctxWithError := context.WithValue(ctx, myErrorKey, ErrMyError1) data, err := getFromDB(ctxWithError)
在 getFromDB
函数中,可以从 context
Pelaksanaan
🎜🎜Untuk melaksanakan suntikan pergantungan, buatcontext.Context
dan jenis error
nya: 🎜func getFromDB(ctx context.Context) ([]byte, error) { err := ctx.Err() if err != ErrMyError1 { // 处理其他错误 } // 处理 ErrMyError1 }
handleError
In fungsi, dapatkan ralat daripada getFromDB
, gunakan context.WithValue
untuk menetapkan jenis ralat: 🎜rrreee🎜Dalam fungsi getFromDB
, anda boleh menggunakan Atas ialah kandungan terperinci Suntikan kebergantungan dalam pengendalian ralat fungsi golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!