golang에는 interface{} 데이터 타입이 있고 이 데이터 타입은 다른 데이터 타입을 값으로 받아서 처리가 가능하다.
var ift interface{}
var a int
a = 33
ift = a
fmt.Println(ift.(int))
이렇체 처리시 실제 33 값이 출력된다.
실제 interface{} 타입에 들어간 literal들에 대한 데이터 타입과 데이터 값들을 처리하도록 interface{}내부적으로 제공하는 실제 기능이다.
이처럼 interface{} 타입은 타입내부에 들어온 값들을 처리할 수 있는 구조를 가지고 처리한다.
이런 구조를 reflect 패키지를 제공하여 interface{} 내부적인 상세 구조에 접근할 수 있도록 함수와 메시지를 제공한다.
reflect 패키지의 핵심은 Type, Value이고 이것은 실제 리터럴이 가진 타입과 밸류를 처리해주는 대표적인 것들이다.
reflect 패키지는 기본 함수 TypeOf(), ValueOf() 가 제공되어 실제값에 대한 타입과 값을 처리하도록 되어있다.
댓글
댓글 쓰기