Much like a writer composes a book from a set of chapters or a chapter from a set of sections, as Go programmers, we can compose our software applications using functional composition.
We can take the functional composition approach to design a software solution that enables us to design complex APIs from a set of smaller ones.
For example, in the Viva La Duck example from the previous chapter, we composed the SurvivalBehaviors interface from two smaller ones:
type SurvivalBehaviors interface {
StrokeBehavior
EatBehavior
}
Nothing is difficult. Complex things are simply built upon smaller, simpler things! When we approach all our software design problems from this perspective, we are able to more easily model the real world--our applications become much easier to read and reason about.