课程名称:GO开发工程师
课程章节:1-5接口的组合;1-6常用的系统接口;2-1函数式编程
课程讲师: ccmouse
课程内容:
- 接口的组合
使用者定义接口以及接口里的方法;使用者还可以将接口组合成新的接口;
实现者只管方法的实现,不关心外部使用者的接口类型以及接口的组合形式。
使用者组合示例代码:
type Retriever interface {
Get(url string) string
}
type Poster interface {
Post(url string, form map[string]string) string
}
// RetrieverPoster 接口组合(兼具Retriever与Poster的功能)
type RetrieverPoster interface {
Retriever
Poster
}。
实现者方法实现示例:
// package mock
type Retriever struct {
Content string
Url string
}
func (r *Retriever) String() string {
return fmt.Sprintf("{ Content: %s }", r.Content)
}
// 实现Post
func (r *Retriever) Post(url string, form map[string]string) string {
r.Url = url
r.Content = form["student"]
return "mock ok"
}
// 实现Get
func (r *Retriever) Get(url string) string {
return r.Content
}
- 常用系统接口
格式化字符串:fmt.Stringer();
构造字符串Readder: strings.NewReader()
除了字符串的Reader/Writer还有字节的Reader/Writer等其它的Reader(抽象为可读)/Writer(抽象为可写)
例如:字节Readder:bytes.NewReader();ZIP Writter: zip.NewWriter() - 函数式编程
参数、返回值均可以用函数。 - 闭包:函数引用函数外部的参数。
课程收获:
- 使用者可以根据不同的业务需求灵活的组合接口,而实现者完全不用关心。
- 抽象Readder(文件、字符串、网络…)、抽象Writtrer(ZIP、CSV、ZIP…)
- Printf : 只可以打印出格式化的字符串。
Sprintf:格式化并返回一个字符串而不带任何输出。
Fprintf:来格式化并输出到 io.Writers 而不是 os.Stdout。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦