标签:back iter amp 返回值 block lse tin 种类型 方法
(实现多态的特性),规定了其他类型的方法,接口既然是一种类型,那可以做为参数和返回值
接口的保存分为两部分:动态类型和动态值
type 接口类型名 interface{
方法名1( 参数列表1 ) 返回值列表1
方法名2( 参数列表2 ) 返回值列表2
…
}
只要实现了接口中所有的方法,都是该接口类型,“实现”是指,方法名和参数和返回值类型都一样。
例子:定义一个接口
type Runner interface {
Run(int, int) (string, string)
...
}
值接收者实现接口:可以把值或者指针赋给接口类型变量
func (a a1)Run{...}
需要 var b writer = a1(...)
或 var b writer = &a1(...)
指针接收者实现接口: 只能把指针赋给接口类型变量
func (a *a1)Run{...}
只能var b writer = &a1(...)
略
略
// Sayer 接口
type Sayer interface {
say()
}// Mover 接口
type Mover interface {
move()
}// 接口嵌套
type animal interface {
Sayer
Mover
}
type xx interface{}
任何类型都实现了这个接口,任何类型变量都可以赋值给它,没有必要起名字,通常定义成
interface {}
// 空接口作为函数参数,可以接收任意类型的函数参数
func show(a interface{}) {
fmt.Printf("type:%T value:%v\n", a, a)
}
// 空接口作为map值,实现value可以保存任意类型的字典。
var studentInfo = make( map[string]interface{} )
studentInfo["name"] = "你好"
studentInfo["age"] = 18
studentInfo["married"] = false
fmt.Println(studentInfo)
标签:back iter amp 返回值 block lse tin 种类型 方法
原文地址:https://www.cnblogs.com/staff/p/13226479.html