타입 어설션으로 타입 변환
타입 어설션(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”) }