[go] 인터페이스의 타입 단언하기

어떤 경우에는 Go 언어에서 인터페이스에 특정한 타입이 할당되어 있는지 확인하는 것이 필요할 수 있습니다. 이러한 경우에 우리는 타입 단언(type assertion)을 사용하여 인터페이스에 담긴 값을 명시적으로 특정한 타입으로 변환할 수 있습니다.

타입 단언 구문

타입 단언은 다음과 같은 구문을 가지고 있습니다.

value, ok := interfaceValue.(Type)

여기서 interfaceValue는 인터페이스가 담고 있는 값이고, Type은 우리가 특정한 타입으로 단언하고자 하는 타입입니다. 또한, okinterfaceValueType으로 단언될 수 있는지 여부를 나타내는 부울린 값입니다.

예시

아래의 코드를 통해 간단한 예시를 확인해 봅시다.

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 언어에서 매우 유용하게 활용될 수 있는 기능 중 하나이므로, 적재적소에 적절히 활용하는 것이 중요합니다.


참고 문헌: