分类 Interface 下的文章

接口


接口是一种类型, 一种抽象的类型
接口就是你要实现的方法的清单
接口的定义

type moner interface{
    方法的签名(参数)(返回值)
}

接口的实现

  • 实现了所有的方法就实现了这个接口
  • 实现了接口就可以当成这个接口类型的变量

接口变量

  • 实现了一个万能的变量, 可以保存所有实现了我这个接口的类型的值
  • 通常作为函数的参数出现

空接口

  • 接口中没有定义任何方法, 也就是说任意类型都实现了空接口
  • 作为函数参数->fmt.PrintLn()
  • mapinterface{}

    interface{}:空接口

接口底层

  • 动态类型 (存什么是什么)
  • 动态值

类型断言

  • 做类型断言的前提是 一定要是一个接口类型的变量
  • 类型断言1

        assign("1")
        func assign(a interface{}) {
            str, ok := a.(string)
        if !ok { // 不是字符串ok为空
           fmt.Println("猜错了")
        } else {
            fmt.Println("猜对了 传进来的是一个字符串:", str)
        }
    }
    
  • 类型断言2

        assign2("asf")
        func assign2(a interface{}) {
            switch v := a.(type) { // 只能在switch内部使用
            case string:
                fmt.Println("这是string类型", v)
            case int:
                fmt.Println("这是int类型", v)
            case byte:
                fmt.Println("这是byte类型", v)
            case int64:
                fmt.Println("这是int64", v)
            }
    
        }