美文网首页
Go-Interface

Go-Interface

作者: SodaCrush | 来源:发表于2021-04-04 23:15 被阅读0次

    Go 接口

    Interface定义

    在golang中,接口是一种抽象类型,接口可理解为一组方法的集合。
    跟Struct结构一样,通过type来进行定义

    type someInterface interface{
        method1(params) returnValue
        method2(params) returnValue
        …
    }
    

    ps:

    • 参数和返回值中的变量名可省略,只写参数类型即可。
    • 一个对象只要实现了接口中的所有方法,那么就实现了这个接口
    • 对于值类型的接口接收者,传入值类型变量,指针类型变量均可

    接口嵌套

    type someInterface1 interface{
        fmt.Println("interface1")
    }
    
    type someInterface2 interface{
        fmt.Println("interface2")
    }
    
    type someInterface interface {
        someInterface1
        someInterface2
    }
    

    接口的实现分布在多个结构体中

    type someInterface interface {
        method1
        method2
    }
    type FatherObj struct{}
    
    func (FatherObj) method1{
        ...
    }
    
    type SubObj struct{
        FatherObj
    }
    
    func (SubObj) method2{
        ...
    }
    
    // FatherObj 实现 method1, SubObj 通过实现 method2 即实现了 someInterface 
    var target someinterface
    target = SubObj{}
    target.method1()
    target.method2()
    

    空接口

    由于空接口没有定义任何方法,也就是说任何类型都实现了空接口,对于空接口类型的变量,可以用任意类型给其赋值

    type noneInterface interface{}
    

    应用场景:对于某个方法的参数,不关心其具体类型,都做相同的逻辑处理的时候

    相关文章

      网友评论

          本文标题:Go-Interface

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