
413
14
장
Reflect, Unsafe, Cgo
반환한다. 이런 구조체는
interface
{}
타입의 변수로만 할당될 수 있고 해당 항목은 리플렉
션을 사용해야만 읽고 쓸 수 있다.
대부분의 경우, 이것은 학술적인 관심에만 해당하는 기능이다.
reflect
.
StructOf
동작 방법
의 시연을 보길 원한다면,
Go
플레이그라운드
9
에
Memoizer
함수를 보도록 하자. 동적으로 생
성된 구조체를 함수의 출력을 캐싱하는 맵의 키로 사용한다.
14.1.7
리플렉션은 메서드를 만들지 못한다
리플렉션으로 할 수 있는 모든 것을 보았지만, 거기엔 우리가 할 수 없는 것이 있다. 신규 함수
및 신규 구조체 타입을 생성하기 위해 리플렉션을 사용할 수 있지만, 타입에 메서드를 추가하
기 위해 리플렉션을 이용할 방법은 없다. 즉, 리플렉션을 사용하여 인터페이스를 구현하는 새
로운 타입을 생성할 수 없다는 의미이다.
14.1.8
가치가 있는 경우에만 리플렉션을 사용하자
Go
의 경계 내에서 데이터를 변환할 때 리플렉션은 필수이지만, 다른 상황에서는 유의할 필요
가 있다. 리플렉션은 무료가 아니다. 시연하기 위해, 리플렉션을 사용하여
Filter
를 구현해보
자. 이것은 많은 언어에서 값의 리스트를 받아 리스트의 각 요소를 검사하고 검사에 통과된 요
소만 포함하여 리스트를 반환하는 일반적인 ...