[go] 에러 타입 확인 및 타입 어설션

Go 언어에서는 에러를 다루기 위한 내장된 인터페이스인 error 인터페이스를 제공합니다. 이 인터페이스는 Error() 메서드를 통해 에러의 메시지를 반환합니다.

아래 예제는 에러 타입을 확인하고 해당 타입에 따라 다른 작업을 수행하는 방법을 보여줍니다.

package main

import (
	"errors"
	"fmt"
)

func main() {
	err := someFunction()

	switch e := err.(type) {
	case CustomError:
		fmt.Println("Custom error:", e.Error())
	case nil:
		fmt.Println("No error")
	default:
		fmt.Println("Unknown error:", err.Error())
	}
}

type CustomError struct {
	message string
}

func (e CustomError) Error() string {
	return e.message
}

func someFunction() error {
	return CustomError{"Something went wrong"}
}

이 예제에서 someFunctionCustomError를 반환하도록 정의되어 있습니다. main 함수에서는 someFunction의 결과를 err 변수에 할당한 다음, switch 문을 사용하여 에러의 타입을 확인하고 해당 내용을 출력하고 있습니다.

Go 언어에서는 switch 문을 활용하여 동적인 타입 확인을 할 수 있으며, 이를 활용하여 에러 핸들링을 보다 유연하게 처리할 수 있습니다.

에러 타입 확인과 함께, “타입 어설션”을 사용하여 특정한 타입으로 변환할 수도 있습니다. “타입 어설션”을 통해 특정 인터페이스를 구현한 타입으로의 변환을 지원하여, 해당 인터페이스가 가진 메서드를 활용할 수 있게 합니다.

Go 언어에서 에러 핸들링 및 타입 어설션에 대한 보다 상세한 내용은 공식 문서를 참고할 수 있습니다.

Errors - The Go Programming Language