Welcome back! Today, we'll master what we learned about backward compatibility in practice. Prepare to apply all the knowledge to practical tasks, but first, let's look at two examples and analyze them.
Let's say that initially, we have a complex data processing function designed to operate on a slice of maps map[string]interface{}
, applying a transformation that converts all string values within the map to uppercase. Here's the initial version:
We intend to expand this functionality by adding capabilities to filter the items based on a condition and to allow for custom transformations. The aim is to retain backward compatibility while introducing these enhancements. Here's the updated approach using flexible function signatures and closures:
