더북(TheBook)

타입 어설션으로 타입 변환

타입 어설션(Type Assertion)은 다음과 같이 수행한다.

v := interfaceValue.(Type)

타입 변환에 성공했다면 해당 타입으로 변환된 값이 반환된다. 해당 타입으로 변환할 수 없을 때는 런타임 오류(panic())가 발생한다.

다음과 같은 방식으로 타입 어설션을 수행하면 안전하게 타입을 변환할 수 있다.

if v, ok := interfaceValue.(Type); ok {
    // ...
}

이 코드에서는 타입 변환에 성공하면 해당 타입으로 변환된 값과 true가 반환된다. 해당 타입으로 변환할 수 없을 때는 해당 타입의 제로값과 false가 반환된다. 타입 어설션을 수행할 때는 항상 타입 변환의 결과를 함께 반환받는 두 번째 방식을 권장한다.

타입 어설션을 통해 값을 특정 인터페이스로 사용할 수 있는지 확인할 수 있다.

if w, ok := v.(io.Writer); ok {
    fmt.Fprintln(w, “v has Write() method”)
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.