接口
关键字interface{}
空接口
可以将所有的类型变量赋值给空接口,空接口可以进行类型断言,再转换为具体的类型变量
定义空接口的格式:
var 变量名 interface{}例子:空接口赋值与类型推断
package main
import (
"fmt"
)
func main() {
// 定义并赋值一个变量v1
var v1 int = 54
// 将变量赋值给一个空接口i1
var i1 interface{} = v1
// 定义一个变量v2
var v2 int
// 对空接口i1进行类型推断,推断成功的话会把值赋给变量v2
v2, _ = i1.(int)
fmt.Println(v2)
}以上代码的运行结果:
类型接口
接口可用于定义一套标准的可操作行为规范,其中包含了各种方法的定义规范。与其他语言不同,golang的接口是一种非侵入式的接口,在类型定义的过程中中不需要知道接口的存在,只会在接口赋值时去判断类型与接口是否匹配。通过这种非侵入式的接口可以更进一步地对代码进行解耦。
定义接口的格式:
例子:接口调用
以上代码的执行结果:
可以这么理解,接口只关心类型能否去执行某个方法,而不会去关心类型中有什么值
类型推断
将接口类型变量转换成其它类型需要使用类型推断,有三种书写方式:
方式一
方式二
方式三
对于参数类型不确定的情况,推荐使用方式三
例子:通过类型推断对接口变量进行格式转换
最后更新于