Go의 오류 처리 기능에 종속성을 주입하면 더 유연하고 테스트 가능한 오류 처리가 가능해집니다. 1. 컨텍스트 및 사용자 정의 오류 유형 생성 2. 컨텍스트에서 오류 획득 및 처리 3. 실제 전투에서 컨텍스트 및 사용자 정의 오류 처리 데이터베이스 작업을 사용합니다.
Go 언어 함수 오류 처리의 종속성 주입
종속성 주입은 종속성(일반적으로 외부 서비스 또는 모듈)을 함수 내부에 하드코딩하는 대신 함수에 전달할 수 있도록 하는 디자인 패턴입니다. 이 접근 방식은 보다 유연하고 테스트 가능한 코드를 허용하므로 오류 처리에 특히 유용합니다.
Go 언어에서는 종속성 주입을 위해 [context.Context
](https://godoc.org/context#Context) 유형을 사용할 수 있습니다. context.Context
는 요청 관련 정보를 함수 매개변수로 명시적으로 전달하지 않고도 쉽게 전달할 수 있는 메커니즘을 제공합니다. 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
Implementation
🎜🎜종속성 주입을 구현하려면context.Context
및 해당 error
유형을 생성하세요. 🎜func getFromDB(ctx context.Context) ([]byte, error) { err := ctx.Err() if err != ErrMyError1 { // 处理其他错误 } // 处理 ErrMyError1 }🎜Next,
handleError
에서 함수를 실행하려면 Context
에서 오류를 가져와 처리하세요. 🎜rrreee🎜🎜실제 사례🎜🎜🎜데이터베이스에서 데이터를 검색해야 하는 함수에서는 종속성 주입을 사용하여 오류를 처리할 수 있습니다. 🎜 rrreee🎜 getFromDB
함수를 호출할 때 context.WithValue
를 사용하여 오류 유형을 설정하세요. 🎜rrreee🎜 getFromDB
함수에서 다음을 사용할 수 있습니다. context에서 특정 오류 가져오기: 🎜rrreee🎜이 접근 방식을 사용하면 오류 처리 코드가 더 유연하고 테스트 가능해집니다. 이를 통해 런타임 시 특정 오류가 주입되고 특정 오류 유형에 따라 다양한 조치를 쉽게 취할 수 있습니다. 🎜
위 내용은 golang 함수 오류 처리에 종속성 주입의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!