根据go语言的数据类型的特点,可以将一个函数作为另一个函数的参数
fun1(),fun2()
将fun1函数作为fun2这个函数的参数。
fun2函数:高阶函数
接受了一个函数作为参数的函数,高阶函数
fun1函数:回调函数
作为另一个函数的参数的函数,叫做回调函数
是的,若形参有默认值,可以传递该参数的值,也可以不传递,但形参的默认值要从形参列表最右端开始设置,如: int sum(int x, int y=2, int z=8)这样设置是对的,可以全部设置默认值,也可以部分设置默认值 int sum(int x = 3, int y, int z)从语法讲,重载是扩展了函数(或方法)签名,从只认名字变为名字+参数类型,所以题主这个例子只要把不同参数的foo函数改成不同名字就好,比如foo1,foo2……这个不支持按官方说法,是为了保持语法简单,以及避免工程中遇到一些问题,比如参数隐式转换等等
而支持重载的语言也有它们的道理,有时候,函数或方法名字不是程序员自己能控制的,比如说,如果java不支持重载,那么只能有一个构造函数,通过不同输入构造对象就比较麻烦,需要弄成静态方法create的方式: