Explain the use of Go's type classes and type classes with functional dependencies for creating and using types with specific behaviors in Go programs?