¿Existe sobrecarga de funciones y métodos en Go como en Java/C++?
¡Hola a todos! Acabo de empezar a aprender Go después de Java, y me encontré con una situación confusa. En Java estoy acostumbrado a que puedo declarar varios métodos con el mismo nombre pero diferentes parámetros — esto se llama sobrecarga (overloading). Por ejemplo, puedo escribir:
```java
void print(String s) { ... }
void print(int i) { ... }
void print(double d) { ... }
```
Ahora intento hacer lo mismo en Go:
```go
package main
func print(s string) {
fmt.Println(s)
}
func print(i int) {
fmt.Println(i)
}
func main() {
print("hello")
print(42)
}
```
Pero el compilador da un error: `print redeclared in this block`. Intenté renombrar el package, cambiar el orden de las funciones — nada funciona.
He leído que en Go no hay sobrecarga clásica, pero parece una limitación muy extraña. ¿Qué hago entonces si necesito que una función funcione con diferentes tipos de datos? ¿Tengo que inventar un nombre único para cada tipo? ¡Esto viola el principio DRY y hace que el código sea...