This chapter is about reflection, a tool that allows an application to inspect its own code, overcoming some of the limitations imposed by Go static typing and its lack of generics. This can be very helpful, for instance, for producing packages that are capable of handling any type of input that they receive.
The following topics will be covered in this chapter:
- Understanding interfaces and type assertions
- Learning about interaction with basic types
- Using reflection with complex types
- Evaluating the cost of reflection
- Learning the best practices of reflection usage