美文网首页
为什么需要Interface

为什么需要Interface

作者: flow__啊 | 来源:发表于2017-06-02 09:53 被阅读93次

写了一个月的插件,发现interface这个关键词几乎没怎么用,然后好奇,打开了gjson的源码,发现gjson的源码用的也很少,最多的用法是相当于java中的object。我开始思索,为什么需要Interface,而不是一个object(写到这里,我想起了被C语言里void* 支配的恐惧)。

个人感觉interface中翻译成接口是有点令人费解。正如handler译成句柄,貌似当时是写错了,勾被看错成句,handler,勾柄,就是门把手,socket就是插座的意思。

对interface(接口)最基本的印象,是fmt.Println这个方法,当时就觉得很神奇,真要实现了String方法,就可以被打印出来。现在写多了程序,就发现,“接口即合约”。
我看到IO里reader/writer的实现,都是用的interface,我也试者去编写自己的 reader/writer,然后当做一个变量去传递。也许是我最近的工作都是在一个包里进行、也不用进行传递,更不用说什么struct的交换。

更权威的总结如下:

An interface is a kind of contract which the implementing type(s) must fulfill. Interfaces describe the behaviorof types, what they can do. They completely separate the definition of what an object can do from how it does it, allowing distinct implementations to be represented at different times by the same interface variable, which is what polymorphism essentially is.
Writing functions so that they accept an interface variable as a parameter makes them more general.
《The Way to Go》

野生翻译如下:

接口是一种必须要全部实现(所申明函数)的约束。接口定义了类型的行为,即:“它们可以做什么”。与“一个对象怎么去做”的定义完全不一样,他允许在不同的时间里,相同的接口变量代表着不同的实现,这就是Go多态性的本质。写方法时,让他们接收接口类型,就像平常的传递一个参数那样。

总结interface

  • 处理未知的数据类型
  • Golang的泛型

写了这么久的Golang,我在想,以前java/C++那一套,构造函数,重载,也并不是真的就那么的必要。但是无比怀念Java的泛型,还有gradle。

相关文章

  • 为什么需要Interface

    写了一个月的插件,发现interface这个关键词几乎没怎么用,然后好奇,打开了gjson的源码,发现gjson的...

  • 注解annotation

    1、为什么注解是@interface? interface 只是用来限制行为的,interface表示行为,不表示...

  • golang struct 实现 interface

    golang中,一般strcut包含 interface类型后,struct类型都需要实现 interface导出...

  • 阅读TS文档中的一些疑问

    为什么有了抽象类(abstract)还需要接口(Interface),他们的区别有哪些? 因为抽象类做为其它派生类...

  • OC-UIKit扩展

    NSString扩展 .h中-需要pod 'CocoaSecurity' @interface NSString(...

  • 5.5-全栈Java笔记:接口的定义和使用

    接口interface 接口的作用 为什么需要接口?接口和抽象类的区别? 接口就是比“抽象类”还“抽象”的“抽象类...

  • golang interface:传指针还是对像

    当定义了一个interface,传参时需要注意实现函数对interface的实现是基于指针的还是对像的。传参时需要...

  • interface

    定义 interface 类型和用 type 定义类型别名是类似的,注意 interface 定义类型不需要等号:...

  • OC的@interface @property @synthes

    为什么.h文件和.m文件里各有1个@interface?它们分别有什么用? .h里面的@interface,不消说...

  • Java&Android开发-浅析ServiceLoad

    了解ServiceLoader,需要先了解SPI(Service Provider Interface) SPI的...

网友评论

      本文标题:为什么需要Interface

      本文链接:https://www.haomeiwen.com/subject/akvefxtx.html