Go语言接口为什么是颠覆性的?

Go语言的接口是一种协议,定义了调用者必须实现的方法。接口的使用在于约束调用者满足前置条件,允许他们调用特定服务。与其他语言不同,Go的接口是隐式实现的,只要实现所有接口方法,就默认实现了接口,这种非侵入式设计让开发者能更专注于功能实现,而无需显式声明接口。
摘要由CSDN通过智能技术生成

什么是接口(Interface)

其实说白了,接口就是一种协议,统一一个标准。你要调用我,那你就必须实现我的这些方法。我不需要知道你是怎么实现的,但是你一定要实现。甚至在Objec-C当中都不叫interface,直接protocol。

我相信不少刚接触interface的人会跟我有一样的疑惑,我实现接口跟不实现接口没什么区别啊?反正都要实现这些方法。问题的误区就在于,接口的使用并不是单人开发模式的。你写接口你写实现,就不用写接口了。我写接口你实现,接口不就用上了。我不给你规定好了,你怎么知道该实现哪些内容呢。实际上也就是个“规范”。

我实现了某个服务,你可以来调用我的服务,但是调用我的服务之前你必须满足某些约束(实现方法),才能调用我写好了这些服务。这个时候接口的作用就出来了,接口约束了你必须满足的前置条件。看完下面的代码,你就明白了:

package main

import (
    "fmt"
)

type Sorter interface {
    Len() int
    Less(i, j int) bool
    Swap(i, j int)
}

func Sort(x Sorter) {
    for i := 0; i < x.Len()-1; i++ {
        for j := i + 1; j < x.Len(); j++ {
            if x.Less(i, j) {
                x.Swap(i, j)
            }
        }
    }
}

type Xi []int
type Xs []string

func (p Xi) Len() int            
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值