加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

第五章 接口2--系统常用接口

发布时间:2021-05-21 06:20:53 所属栏目:大数据 来源: https://www.jb51.cc
导读:下面介绍几个常用的接口 1. stringer 在fmt.print中定义了一个Stringer接口. 这个接口里只有一个方法String. 实现了这个接口的String方法的结构体,? 那么在外部调用打印结构体的时候,将按照Stringer中定义的方式打印. ? ? ? 例如给Retriever结构体增加一个St

下面介绍几个常用的接口

1. stringer

  在fmt.print中定义了一个Stringer接口. 这个接口里只有一个方法String. 实现了这个接口的String方法的结构体,? 那么在外部调用打印结构体的时候,将按照Stringer中定义的方式打印.

  

?

?

?  例如给Retriever结构体增加一个String方法.?

type Retriever struct {
    Contents string
}

func (r *Retriever) String()  {
    return fmt.Sprintf("Contents:%s",r.Contents)
}

  使用的时候,打印对象,可以看到直接按照String中定义的格式打印

func main() {
    retriever := &mock.Retriever{内容}
    fmt.Printf(结构体的值是----%s nretriever)
}

直接打印,打印结果如下:

结构体的值是----Contents:内容 

2. io中的Reader和Write

  通过学些这两个接口,对接口的: 由使用者来定义接口有了进一步的理解.?

  比如说Reader接口,定义了一个Read方法

  

?

?  Writer接口定义了一个Write方法

  

?

?  实现了Read方法的结构体有很多,比如io中的File. 他既实现了Read,又实现了Write. File这个结构体提供了一些能力,比如读的能力,写的能力. 但是,File不会明说我实现了哪些接口. 而只是说定义了哪些方法. File中实现的接口,有些接口是主动定义的,有些接口碰上的,正好他也是这么定义的.?

  因此,就是说. 我们定义一个接口,接口里定义了方法. 而在结构体中,定义了方法和接口中定义的方法的入参和返回值一致,我们就认为它实现了这个接口. 虽然我们认为他实现了接口,但是不是真的实现了接口,要使用的时候来决定. 如果使用的时候作为接口的实体使用,那么就表示实体继承了接口. 但是,如果没有作为接口的实体使用,那么他就不是实现了接口.

  

定义方法的时候,参数尽量使用接口,这样定义出来的方法,只要实现了接口的结构体都能用

?

  

?

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读