런타임에서의 reflection을 구현함
임의(arbitary)의 타입을 가진 객체들을 조작할 수 있게끔 함
정적 타입인 interface{}의 값을 가지고 와서 타입 정보를 출력한다
이때 TypeOf 메서드를 사용하게 된다.
ValueOf란 메서드도 지원하며, 런타임에서의 데이터 값을 반환한다.
Zero란 메서드는 타입을 받아서 그 타입의 zero 값을 나타내는 값을 반환한다
https://go.dev/blog/laws-of-reflection 글을 번역했습니다.
해당 글은 최신버전 고에 익숙한 사용자들도 혼란스럽지 않도록 일부 수정한 점 참고바랍니다.
프로그램이 타입을 통해 자기 자신의 구조를 조사하는 능력을 말한다.
즉 metaprogramming을 의미한다. (내가 지금 무엇을 선언하고 무슨 작업을 하고 있는지 스스로 인지하는 프로그래밍임)
또한, 큰 혼란을 야기하는 원인이기도 하다.