Go复习--为何不允许重载overload?
函数重载:多个函数同名,但形参不同。Go不支持重载overload,为何?
package main import "fmt" func testF(callback func()){ callback() } func main() { show() testF(show) } func show(){ fmt.Printf("hello show\n") } //func show(msg string){ // fmt.Printf("hello show\n") //}
Go函数名可以像变量一样作为实参传递到另外的函数中调用,如果支持重载,则光是凭函数名,无法区分具体哪个函数。
所以,Go不支持Overload。
以上分析错误!!
附:
go应该是没有这2个特性的,因为同包内不能存在重名函数。
不过有个办法可以传递不同类型的参数,比如使用interface{}作为参数,然后在方法体 内部断言,根据接口的类型做不同的逻辑