What is the difference between Go's higher-order functions and first-class functions for creating and using functions as values in Go programs?