zoukankan      html  css  js  c++  java
  • go interface

    //所有的结构体 都实现了空接口
    //接口类型转换 结构体变量 = 接口名(实现接口的结构体变量)    只能高级转为低级 就是转前的接口中方法在转后接口中都有实现
    package main
    
    import (
        "fmt"
    )
    
    //定义一个接口
    type USB interface{
        Name() string //方法 返回名称string
        Connect()
    }
    
    //结构体
    type PhoneConnecter struct{
        name string
    
    }
    
    //PhoneConnect 结构体实现了USB 接口的Name()方法
    func (pc PhoneConnecter)Name() string {
        return pc.name
    }
    
    //PhoneConnect 结构体实现了USB接口的Connect的方法
    func (pc PhoneConnecter)Connect(){
        fmt.Println("connect:",pc.name)
    }
    func main(){
        TestInterface()
    
    }
    func TestInterface(){
        var a USB    //声明一个a USB类型
        a = PhoneConnecter{"jacky"}    //声明一个结构体
        a.Connect()            //调用a实现了的USB接口中的Connect方法
        fmt.Println(a.Name())        //调用a实现了的USB接口中的Name方法
        Disconnect(a)            //这里不用a调用把a[结构体]当参数传入
    }
    //func Disconnect(usb USB){        //这里的参数为接口,当传入来的是一个结构体,这个结构体实现了USB这个方法。
    func Disconnect(usb interface{}){        //下面使用switch
        /*
        if pc,ok := usb.(PhoneConnecter);ok{ //判断传进来的是不是PhoneConnecter类型,pc是a, ok 是true/false;
            fmt.Println("Disconnect",pc.name)
            return
        }
        */
        //或者
        switch v := usb.(type) {    //获取传进来的a的类型
        case PhoneConnecter:        //如果是PhoneConnect类型
            fmt.Println("Disconnected",v.name)
        default:
            fmt.Println("Unknown decive")
        }
    }
  • 相关阅读:
    Oracle中TO_DATE格式
    实现带查询功能的Combox控件
    Combox和DropDownList控件的区别
    C# 获取字符串中的数字
    C# try catch finally 执行
    树形DP codevs 1814 最长链
    codevs 2822 爱在心中
    匈牙利算法 cojs.tk 搭配飞行员
    匈牙利算法 codevs 2776 寻找代表元
    2016-6-19 动态规划,贪心算法练习
  • 原文地址:https://www.cnblogs.com/jackylee92/p/6229208.html
Copyright © 2011-2022 走看看