关键字func用于定义函数。
- 无须前置声明。
- 不支持命名嵌套定义
- 不支持同名函数重载
- 不支持默认参数
- 支持不定长变参
- 支持多返回值
- 支持命名返回值
- 支持匿名函数和闭包
函数属于第一对象(指可在运行期创建,可用作函数参数或返回值,可存入变量的实体),具有相同签名(参数及返回值列表)的视作同一类型。
func hello() {
println("hello world")
}
func exec(f func()) {
f()
}
func main() {
f := hello
exec(f)
}
从阅读和代码维护的角度来说,使用命名类型更加方便
//定义函数类型
type FormatFunc func(string, ...interface{}) (string,error)
func format(f FormatFunc, s string, a ...interface{}) (string,error) {
return f(s, a...)
}
网友评论