Goland 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) } }