Explain the use of Go's type composition for creating complex data structures?