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{}作为参数,然后在方法体 内部断言,根据接口的类型做不同的逻辑

posted @ 2019-09-17 16:16  wanjingchang  阅读(381)  评论(0编辑  收藏  举报