https://pkg.go.dev/reflect

Overview

런타임에서의 reflection을 구현함

임의(arbitary)의 타입을 가진 객체들을 조작할 수 있게끔 함

정적 타입인 interface{}의 값을 가지고 와서 타입 정보를 출력한다

이때 TypeOf 메서드를 사용하게 된다.

ValueOf란 메서드도 지원하며, 런타임에서의 데이터 값을 반환한다.

Zero란 메서드는 타입을 받아서 그 타입의 zero 값을 나타내는 값을 반환한다

The Laws of Reflection

https://go.dev/blog/laws-of-reflection 글을 번역했습니다.

해당 글은 최신버전 고에 익숙한 사용자들도 혼란스럽지 않도록 일부 수정한 점 참고바랍니다.

reflection이란 무엇인가?

프로그램이 타입을 통해 자기 자신의 구조를 조사하는 능력을 말한다.

즉 metaprogramming을 의미한다. (내가 지금 무엇을 선언하고 무슨 작업을 하고 있는지 스스로 인지하는 프로그래밍임)

또한, 큰 혼란을 야기하는 원인이기도 하다.