[日常] Go语言圣经--接口约定习题
Go语言圣经-接口
1.接口类型是对其它类型行为的抽象和概括
2.Go语言中接口类型的独特之处在于它是满足隐式实现的
3.Go语言中还存在着另外一种类型:接口类型。接口类型是一种抽象的类型
4.一个类型可以自由的使用另一个满足相同接口的类型来进行替换被称作可替换性(LSP里氏替换)
练习 7.1: 使用来自ByteCounter的思路,实现一个针对对单词和行数的计数器。你会发现bufio.ScanWords非常的有用。
package main import ( "bufio" "fmt" "strings" ) func main() { var c WordsCounter fmt.Fprintf(&c, "hello world 123") fmt.Println(c) //输出 3 } /* 练习 7.1: 使用来自ByteCounter的思路,实现一个针对对单词和行数的计数器。你会发现bufio.ScanWords非常的有用。 */ type ByteCounter int func (c *ByteCounter) Write(p []byte) (int, error) { *c += ByteCounter(len(p)) // convert int to ByteCounter return len(p), nil } //定义类型 type WordsCounter int //满足相同接口的类型 func (w *WordsCounter) Write(p []byte) (int, error) { //分隔字符串 s := strings.NewReader(string(p)) bs := bufio.NewScanner(s) bs.Split(bufio.ScanWords) sum := 0 for bs.Scan() { sum++ } *w = WordsCounter(sum) return sum, nil }
十年开发经验程序员,离职全心创业中,历时三年开发出的产品《唯一客服系统》
一款基于Golang+Vue开发的在线客服系统,软件著作权编号:2021SR1462600。一套可私有化部署的网站在线客服系统,编译后的二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的全渠道在线客服系统,致力于帮助广大开发者/公司快速部署整合私有化客服功能。
开源地址:唯一客服(开源学习版)
官网地址:唯一客服官网