Golang笔记——Interface类型😊
Go语言中的`interface`类型是一种强大的抽象工具,它定义了一组方法签名,任何实现了这些方法的类型都自动满足该接口,无需显式声明。这种"鸭子类型"的设计让Go的接口既灵活又实用!🦆
基本语法✨
```go
typeAnimalinterface{
Speak()string
Move()string
}
```
上面定义了一个`Animal`接口,要求实现`Speak()`和`Move()`两个方法。
接口实现️
任何类型只要实现了接口的所有方法,就隐式实现了该接口:
```go
typeDogstruct{}
func(dDog)Speak()string{
return"汪汪!"
}
func(dDog)Move()string{
return"四条腿跑"
}
//Dog自动实现了Animal接口
varaAnimal=Dog{}
fmt.Println(a.Speak())//输出:汪汪!
```
空接口🌌
`interface{}`是空接口,可以表示任何类型,类似于Java中的Object:
```go
funcprintAnything(vinterface{}){
fmt.Printf("值:%v,类型:%T
",v,v)
}
printAnything(42)//值:42,类型:int
printAnything("hello")//值:hello,类型:string
```
类型断言🔍
可以使用类型断言来检查接口值的具体类型:
```go
variinterface{}="hello"
s:=i.(string)//断言i是string类型
fmt.Println(s)//hello
s,ok:=i.(string)//安全断言
ifok{
fmt.Println("是字符串:",s)
}
```
接口组合🧩
Go支持接口组合,可以创建更复杂的接口:
```go
typeSpeakerinterface{
Speak()string
}
typeMoverinterface{
Move()string
}
//组合接口
typeAnimalinterface{
Speaker
Mover
}
```
接口是Go语言多态性的核心,它简单而强大,是Go设计哲学"小而美"的完美体现!💖通过接口,我们可以编写更灵活、更通用的代码,同时保持类型安全。
Go语言中的`interface`类型是一种强大的抽象工具,它定义了一组方法签名,任何实现了这些方法的类型都自动满足该接口,无需显式声明。这种"鸭子类型"的设计让Go的接口既灵活又实用!🦆
基本语法✨
```go
typeAnimalinterface{
Speak()string
Move()string
}
```
上面定义了一个`Animal`接口,要求实现`Speak()`和`Move()`两个方法。
接口实现️
任何类型只要实现了接口的所有方法,就隐式实现了该接口:
```go
typeDogstruct{}
func(dDog)Speak()string{
return"汪汪!"
}
func(dDog)Move()string{
return"四条腿跑"
}
//Dog自动实现了Animal接口
varaAnimal=Dog{}
fmt.Println(a.Speak())//输出:汪汪!
```
空接口🌌
`interface{}`是空接口,可以表示任何类型,类似于Java中的Object:
```go
funcprintAnything(vinterface{}){
fmt.Printf("值:%v,类型:%T
",v,v)
}
printAnything(42)//值:42,类型:int
printAnything("hello")//值:hello,类型:string
```
类型断言🔍
可以使用类型断言来检查接口值的具体类型:
```go
variinterface{}="hello"
s:=i.(string)//断言i是string类型
fmt.Println(s)//hello
s,ok:=i.(string)//安全断言
ifok{
fmt.Println("是字符串:",s)
}
```
接口组合🧩
Go支持接口组合,可以创建更复杂的接口:
```go
typeSpeakerinterface{
Speak()string
}
typeMoverinterface{
Move()string
}
//组合接口
typeAnimalinterface{
Speaker
Mover
}
```
接口是Go语言多态性的核心,它简单而强大,是Go设计哲学"小而美"的完美体现!💖通过接口,我们可以编写更灵活、更通用的代码,同时保持类型安全。
1102

被折叠的 条评论
为什么被折叠?



