亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【九月打卡】第5天 go語言函數式編程

標簽:
Go

课程名称GO开发工程师

课程章节:2-1函数式编程;2-2函数式编程例1;2-3函数式编程例2

课程讲师ccmouse

课程内容

函数编程:
参数、变量、返回值都可以是函数

函数指针:
C++里只能使用函数指针,不能将函数直接传递给别人

正统函数式编程:
1. ​不可变性:不能有状态,只有常量与函数
2. ​函数只能有一个参数

闭包:
函数体内的自由变量链接到了函数体外部,整个结构称之为闭包

go 语言不是正统的函数式编程

​斐波拉契数列(为函数实现接口)

func fibonacci() intGen {
	a, b := 0, 1
	return func() int {
		a, b = b, a+b
		return a
	}
}

type intGen func() int

// 函数是一定公民,也能实现接口
// 实现IO Reader 的read方法
func (g intGen) Read(p []byte) (n int, err error) {
	next := g()
	if next > 10000 {
		return 0, io.EOF // io.EOF 到达文件尾部
	}
	//使用strings Reader代理读取输入的数字
	s := fmt.Sprintf("%d\n", next) // 1\n 1\n 2\n
	return strings.NewReader(s).Read(p)
}

使用函数来遍历二叉树

func (node *Node) Traverse() {
	// 使用函数遍历"二叉树"
	node.TraverseFunc(func(n *Node) {
		n.Print()
	})
}

func (node *Node) TraverseFunc(f func(*Node)) {
	if node == nil {
		return
	}
	// 中序遍历,左->中->右
	node.Left.TraverseFunc(f)
	f(node) // 不用关心外部函数怎么实现,只管调用
	node.Right.TraverseFunc(f)
}

课程收获
函数是一等公民,也能实现接口。
使用函数传参,实现者内部无需关心外部函数具体实现,外部使用者可以做更多定制化的操作。
使用strings Reader代理读取输入的数字。
io.EOF 到达文件尾部。

图片描述

图片描述
图片描述

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消