0


网络编程【3】通过网络套接字操作引出接口作用

目录:- 引出问题
- 类比举例
- 总结

1、引出问题: 为什么conn可以作为io.writer/io.reader参数进行读取?
io.write有write方法接口

type Writer interface{Write(p []byte)(n int, err error)}

net.dial返回的conn也具有write方法接口

type Conn interface{Read(b []byte)(n int, err error)Write(b []byte)(n int, err error)Close()errorLocalAddr() Addr
    RemoteAddr() Addr
    SetDeadline(t time.Time)errorSetReadDeadline(t time.Time)errorSetWriteDeadline(t time.Time)error}

所以实现可该方法就可以作为参数进行传入

2、类比举例
举一个例子,动物界举办动物代表长跑比赛,但是条件为陆栖动物(会跑)
(1).定义个比赛,参数为动物,只要会跑即可(将动物进行抽象)

type Animal interface{Run()(int,error)}funcRunGame(animal Animal)(speed int, err error){return animal.Run()}

(2).选手就位
一号选手小猪佩奇

type Pig struct{
    Name string
    Speed int}func(p *Pig)Run()(interror){
    fmt.Println(p.Name +" 慢慢悠悠地走来了...")return p.Speed,nil}func(p *Pig)Eat(){}

二号选手黑猫警长

type Cat struct{
    Name string
    Speed int}func(c *Cat)Run()(int,error){
    fmt.Println(c.Name +" 凌波微步、飞檐走壁...")return c.Speed,nil}

三号选手江小鱼(乱入选手)

type Fish struct{
    Name string
    Speed int}func(f *Fish)Swim()(int,error){
    fmt.Println(f.Name +" 游啊游...")return f.Speed,nil}

(3).主函数

funcmain(){
    prank :=RunGame(&Pig{Name:"小猪佩奇", Speed:30})
    crank :=RunGame(&Cat{Name:"黑猫警长", Speed:80})
    frank :=RunGame(&Fish{Name:"江小鱼", Speed:85})
    fmt.Println(prank, crank, frank)}

运行之后报错: 意思就是鱼不能跑

cannot use &Fish literal (type *Fish) as type Animal in argument to RunGame:
*Fish does not implement Animal (missing Run method)

把江小鱼赶出比赛后的结果为

小猪佩奇 慢慢悠悠地走来了...
黑猫警长 凌波微步、飞檐走壁...
30 80

三、总结
在股市里有一种说法叫借壳上市,只要你的公司具备壳的所有方法。你的公司就可以上市,在股市里融资。
换句话说。资本市场操作的对象就是上市的股票,上了市的股票就能被资本市场操作。

壳也就是接口

标签:

本文转载自: https://blog.csdn.net/qq_38900565/article/details/115438101
版权归原作者 国际渣男 所有, 如有侵权,请联系我们删除。

“网络编程【3】通过网络套接字操作引出接口作用”的评论:

还没有评论