既然使用接口需要每个结构都要实现接口里面的方法,为什么还需要接口
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
我个人感觉接口在golang中是一个相当重要和创新的设计, 接口是一个万能类型, 可以是任何数据的载体, 楼主提到的接口中的方法必须被struct实现才算实现了接口这正是接口的奇妙之处, 比如error是一个接口, 你只要实现了Error函数返回一个字符串就行, 这就为你自己定义业务错误和系统错误混合使用打好了基础. 你的函数返回的只是一个error, 但是这个error可以是系统错误也可以是你的业务错误, 取决于这个interface{}实际的类型是什么. 这就是interface{}的魅力. 你可以根据实际的错误类型做出不同的错误处理. golang发展到现在我觉得如果能尽快实现对泛型的支持那真的是一个很令人欣喜的进步了, 期盼2.0早点到来实现泛型.
接口像是协议.
在强类型语言里,接口是一种标准,制定了一系列规范。标准,好好理解一下。
又不是只有go特有的。写几段代码就理解了。
面向对象设计原则里面有一条: 依赖倒置原则
`单行代码`
我个人感觉接口在golang中是一个相当重要和创新的设计, 接口是一个万能类型, 可以是任何数据的载体, 楼主提到的接口中的方法必须被struct实现才算实现了接口这正是接口的奇妙之处, 比如error是一个接口, 你只要实现了Error函数返回一个字符串就行, 这就为你自己定义业务错误和系统错误混合使用打好了基础. 你的函数返回的只是一个error, 但是这个error可以是系统错误也可以是你的业务错误, 取决于这个interface{}实际的类型是什么. 这就是interface{}的魅力. 你可以根据实际的错误类型做出不同的错误处理. golang发展到现在我觉得如果能尽快实现对泛型的支持那真的是一个很令人欣喜的进步了, 期盼2.0早点到来实现泛型.
接口像是协议.
在强类型语言里,接口是一种标准,制定了一系列规范。标准,好好理解一下。
又不是只有go特有的。写几段代码就理解了。
面向对象设计原则里面有一条: 依赖倒置原则