美文网首页V语言
V语言学习笔记-13接口

V语言学习笔记-13接口

作者: lydiandy | 来源:发表于2020-05-19 16:19 被阅读0次

    接口定义

    使用interface关键字定义接口,跟go一样

    默认是模块级别,使用pub变为公共级别

    接口命名跟结构体一样,要求首字母大写,建议以er风格结尾,非强制

    pub interface Speaker {
            speak() string
    }
    

    目前没有看到接口可以进行组合或者继承的代码

    接口实现

    没有接口实现的关键字,类型无需显示声明所要实现的接口,

    鸭子类型:只要结构体实现了接口定义的方法,就满足该接口的使用

    module main
    
    struct Dog {}
    
    struct Cat {}
    
    fn (d Dog) speak() string {
        return 'woof'
    }
    
    fn (c Cat) speak() string {
        return 'meow'
    }
    
    interface Speaker {
        speak()string
    }
    
    fn perform(s Speaker) {
        println(s.speak())
    }
    
    fn main() {
        dog := Dog{}
        cat := Cat{}
        perform(dog) // "woof"
        perform(cat) // "meow"
    }
    
    

    接口可以作为结构体字段类型使用:

    struct Foo {
        speaker Speaker //接口类型字段
        speakers []Speaker //接口类型数组字段
    }   
    

    接口参数类型判断

    可以使用is关键字,对接口参数的具体类型进行判断

    fn perform(s Speaker) {
        if s is Dog { //通过is关键字,判断接口类型是否是某一个具体类型
            println('s is Dog')
        }
    
        println(s.speak())
    }
    

    相关文章

      网友评论

        本文标题:V语言学习笔记-13接口

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