Explain the use of Go's higher-order functions for creating and using functions that take other functions as arguments or return functions as results?