zoukankan      html  css  js  c++  java
  • Go语言

    Go的接口使用interface关键词定义。

    接口定义:

    // 接口
    type Movable interface {
      move(speed int) int
    }
    

    接口实现:

    第一个实现,speed * 2

    type Cat struct {
    }
    // 函数原型一样,实现了Movable接口
    func (c Cat) move(speed int) int {
      return speed * 2
    }
    

    第二个实现,speed * 3

    type Dog struct {
    }
    func (d Dog) move(speed int) int {
       return speed * 3
    }
    

    调用:

    func move(name string, m Movable) {
      fmt.Printf("%s >>> %d
    ", name, m.move(2))
    }
    
    var c Cat
    var d Dog
    move("Cat", c)
    move("Dog", d)
    
    // 打印结果:
    //Cat >>> 4
    //Dog >>> 6
    

    注意:一个结构体实现了接口的所有函数,才叫实现了这个接口。

    空接口:

    type Void interface{
    }
    

    空接口类似C语言中的void*。

    接口也可以嵌套使用,跟结构体类似。

    空接口使用案例:

    func logging(v interface{}) {
      switch t := v.(type) {
      case string:
        fmt.Printf("string >> %s
    ", t)
      case int:
        fmt.Printf("int >> %d
    ", t)
      }
    }
    
    // 调用案例:
    logging(a)
    logging(b)
    // 打印结果:
    //int >> 8
    //string >> go
    
  • 相关阅读:
    sort函数详解
    C++重载运算符的规则详解
    poj3061-subsequence
    员工管理系统 :练习
    Jdbc 模拟登陆系统的练习
    有关String 的常用方法
    浅谈希尔排序-----摘录
    简单选择排序
    typedef 和define 的区别
    写博客的理由
  • 原文地址:https://www.cnblogs.com/itqn/p/15056330.html
Copyright © 2011-2022 走看看