[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 함수를 통해 편리하게 처리할 수 있습니다.

이를 통해 코드를 보다 간결하게 유지하고 에러 처리를 보다 효과적으로 할 수 있습니다.

자세한 내용은 공식 문서를 참고하시기 바랍니다.