• Go --- InterFace


    package main


    import (
    "fmt"
    )


    //define a interface 
    type USB interface {
    Name() string
    connecter
    }
    type connecter interface {
    connect()
    }


    type PhoneConnecter struct {
    name string
    }


    func (pc PhoneConnecter) Name() string {
    return pc.name
    }
    func (pc PhoneConnecter) connect() {
    fmt.Println("Connected", pc.name)
    }


    func main() {
    pc := PhoneConnecter{"PhoneConnecter"}
    var a connecter
    a = PhoneConnecter(pc)
    a.connect()
    //DisConnect(a)
    //Jude(a)


    var y interface{}
    fmt.Print(y)


    var p *int = nil
    y = p
    fmt.Println(y == nil)


    }
    func DisConnect(usb USB) {


    if pc, ok := usb.(PhoneConnecter); ok {
    fmt.Println("This is a PhoneConnecter", pc.name)
    return
    }
    fmt.Println("Unknown device")
    }


    func Jude(usb USB) {
    switch v := usb.(type) {
    case PhoneConnecter:
    fmt.Println("Jude from PhoneConnecter", v.name)
    default:
    fmt.Println("Unknown device.")
    }
    }

  • 相关阅读:
    spring给容器中注入组件的几种方式
    Linux多进程
    Linux多进程的应用
    Linux进程通信
    Linux信号
    Linux共享内存
    Linux信号量
    Linux多线程
    Linux线程同步
    Linux调用可执行程序
  • 原文地址:https://www.cnblogs.com/james1207/p/3317960.html
Copyright © 2020-2023  润新知