定义
概念定义
interface 是一种非常强大的特性,允许你定义一组方法,但不包含这些方法的实现。它提供了一种实现多态性的途径,使得不同类型可以通过实现相同的方法集来满足同一个接口,从而在不修改代码的情况下扩展功能。
此外,也可以使用interface{}来定义一种可接受多种数据类型的变量。
类型断言
package main
import "fmt"
func main() {
var str = "abcde"
var b interface{}
b = str
fmt.Println(b.(string))
var i1 = 85
b = i1
fmt.Println(b.(int))
}
----------------运行结果---------------------
abcde
85
接口实现
package main
type Animal interface {
Speak() string
}
type Cat struct {
speakString string
}
func (c *Cat) Speak() string {
return c.speakString
}
type Dog struct {
speakString string
}
func (d *Dog) Speak() string {
return d.speakString
}
func main() {
cat := &Cat{speakString: "miao"}
dog := &Dog{speakString: "wang"}
animal := []Animal{cat, dog}
for _, a := range animal {
println(a.Speak())
}
}
----------------运行结果---------------------
miao
wang