为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 脚本专栏 > golang 正文

高阶函数golang(golang函数详解)

三叶资源网 2022-06-27 09:59:32 golang 326 ℃ 0 评论

高阶函数(Higher Order Functions),就是操纵函数的函数,它可能输入参数是函数,或者返回是函数。


例子1,返回一个函数

package main

import "fmt"

func sum(x, y int) int {
	return x + y
}
func partialSum(x int) func(int) int {
	return func(y int) int {
		return sum(x, y)
	}
}
func main() {
	partial := partialSum(3)
	fmt.Println(partial(7))
}

partialSum 返回了一个函数,接受int值,返回一个int值。


例子2,下面这个例子,是一个三层函数的返回。

package main

import "fmt"

func squareSum(x int) func(int) func(int) int {
	return func(y int) func(int) int {
		return func(z int) int {
			return x*x + y*y + z*z
		}
	}
}
func main() {
	// 5*5 + 6*6 + 7*7
	fmt.Println(squareSum(5)(6)(7))
}


定义函数类型


Golang支持定义自己的函数类型,使用关键字 type


所以上面的代码,经过改写后,就成了下面的样子。 注意,使用函数类型时,参数和返回值要统一替换, 不能只替换一部分。

type First func(int) int

type Second func(int) First

func squareSum(x int) Second {
	return func(y int) First {
		return func(z int) int {
			return x*x + y*y + z*z
		}
	}
}


func main() {
	// 5*5 + 6*6 + 7*7
	fmt.Println(squareSum(5)(6)(7))
}

Tags:

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
EXUI缓动登陆界面源码sqllite斗鱼房间热度多页面浏览器Accessible猴子分桃进销存系统语音报时方块对齐位置算法postlibMysql易语言破解版内存调用获取登陆QQ新浪微博Web协议cropper.js精灵脚本压缩解压图片切割SQLite3
最新评论