Go 中是否有像 Java/C++ 那样的函数和方法重载?
大家好!我刚从 Java 转到 Go,遇到了一个令人困惑的情况。在 Java 中,我习惯可以声明多个同名但参数不同的方法——这叫做重载(overloading)。例如,我可以写:
```java
void print(String s) { ... }
void print(int i) { ... }
void print(double d) { ... }
```
现在我尝试在 Go 中做同样的事:
```go
package main
func print(s string) {
fmt.Println(s)
}
func print(i int) {
fmt.Println(i)
}
func main() {
print("hello")
print(42)
}
```
但编译器报错:`print redeclared in this block`。我尝试重命名包、改变函数顺序——都没用。
我读到 Go 没有经典的重载,但这似乎是一个非常奇怪的限制。那么如果我的函数需要处理不同类型的数据该怎么办?难道必须为每个类型想一个独特的名字吗?这违反了 DRY 原则,并使代