[go] 에러 타입 확인을 위한 As 함수
흔히 Go 언어에서 에러를 처리하다 보면 에러 타입을 확인하고 처리해야 하는 경우가 있습니다. Go에는 이를 간편하게 처리할 수 있는 As
함수가 있습니다. 이 함수를 사용하여 에러 타입을 확인하고 처리하는 방법을 알아보겠습니다.
As
함수 소개
As
함수는 인터페이스 타입을 사용하여 값을 타입으로 변환하는 데 사용됩니다. 특히, 이 함수는 주어진 에러를 특정 타입으로 변환하여 에러를 처리하는 데 도움이 됩니다.
예를 들어, 다음과 같이 사용할 수 있습니다.
package main
import "fmt"
type CustomError struct {
msg string
}
func (e CustomError) Error() string {
return e.msg
}
func main() {
var err error = CustomError{msg: "Custom error message"}
var ce CustomError
if errors.As(err, &ce) {
fmt.Println("Error is of type CustomError")
fmt.Println(ce)
}
}
위의 예제에서 errors.As
함수를 사용하여 에러를 CustomError
타입으로 변환하고 해당 타입의 값으로 캐스팅합니다.
사용 예제
보다 구체적인 사용 예제를 살펴보겠습니다.
package main
import (
"errors"
"fmt"
)
type MyError struct {
CustomMsg string
}
func (e MyError) Error() string {
return fmt.Sprintf("My custom error: %s", e.CustomMsg)
}
func main() {
var err error = MyError{CustomMsg: "Something went wrong"}
var merr MyError
if errors.As(err, &merr) {
fmt.Println("Error is of type MyError")
fmt.Println("Custom message:", merr.CustomMsg)
}
}
위의 예제에서는 MyError
타입을 정의하고 이를 사용하여 errors.As
함수를 통해 에러 타입을 확인하고 처리하는 방법을 보여줍니다.
결론
As
함수는 Go 언어에서 에러를 처리하다 보면 유용하게 활용할 수 있는 함수입니다. 에러를 처리하는 과정에서 타입을 확인하고 처리해야 하는 경우에 As
함수를 통해 편리하게 처리할 수 있습니다.
이를 통해 코드를 보다 간결하게 유지하고 에러 처리를 보다 효과적으로 할 수 있습니다.
자세한 내용은 공식 문서를 참고하시기 바랍니다.