[go] 인터페이스의 타입 단언하기
어떤 경우에는 Go 언어에서 인터페이스에 특정한 타입이 할당되어 있는지 확인하는 것이 필요할 수 있습니다. 이러한 경우에 우리는 타입 단언(type assertion)을 사용하여 인터페이스에 담긴 값을 명시적으로 특정한 타입으로 변환할 수 있습니다.
타입 단언 구문
타입 단언은 다음과 같은 구문을 가지고 있습니다.
value, ok := interfaceValue.(Type)
여기서 interfaceValue
는 인터페이스가 담고 있는 값이고, Type
은 우리가 특정한 타입으로 단언하고자 하는 타입입니다. 또한, ok
는 interfaceValue
가 Type
으로 단언될 수 있는지 여부를 나타내는 부울린 값입니다.
예시
아래의 코드를 통해 간단한 예시를 확인해 봅시다.
package main
import "fmt"
func main() {
var i interface{} = "hello"
s, ok := i.(string)
if ok {
fmt.Println(s)
} else {
fmt.Println("Not a string")
}
}
위의 코드는 interface{}
타입의 변수 i
에 문자열을 할당한 후, 타입 단언을 통해 i
가 실제로 문자열 타입인지 확인합니다.
결론
타입 단언을 사용하면 인터페이스에 담긴 값을 특정한 타입으로 변환하여 사용할 수 있습니다. 이때 ok
값을 확인하여 해당 타입으로의 변환 가능 여부를 확인하는 것이 중요합니다.
타입 단언은 Go 언어에서 매우 유용하게 활용될 수 있는 기능 중 하나이므로, 적재적소에 적절히 활용하는 것이 중요합니다.
참고 문헌:
- https://tour.golang.org/methods/15