接口
1 什麼是接口
把所有的具有共性的方法定義在一起,任何其他類型只要實現了這些方法就是實現了這個接口
接口定義了一組方法,如果某個對象實現了某個接口的所有方法,則此對象就實現了該接口
2 接口的定義
/* 定義接口 */
type interface_name interface {
method_name1 [return_type]
method_name2 [return_type]
method_name3 [return_type]
...
method_namen [return_type]
}
/* 定義結構體 */
type struct_name struct {
/* variables */
}
/* 實現接口方法 */
func (struct_name_variable struct_name) method_name1() [return_type] {
/* 方法實現 */
}
...
func (struct_name_variable struct_name) method_namen() [return_type] {
/* 方法實現*/
}
3 接口代碼實現
package main
import "fmt"
// Animal 接口實現 接口實現了 move和eat兩個方法
type Animal interface {
move()
eat(food string)
}
// Cat 定義貓的結構體
type Cat struct {
name string
feet uint8
}
func (c Cat) move() {
fmt.Printf("%s跑了。。。\n", c.name)
}
func (c Cat) eat(food string) {
fmt.Printf("%s喫%s\n", c.name, food)
}
// Chicken 定義雞的結構體
type Chicken struct {
name string
feet uint8
}
func (c Chicken) move() {
fmt.Printf("%s跑了。。。\n", c.name)
}
func (c Chicken) eat(food string) {
fmt.Printf("%s喫%s\n", c.name, food)
}
func main() {
var am Animal
am = Cat{name: "小貓", feet: 4}
am.move()
am.eat("老鼠")
am = Chicken{
name: "小雞",
feet: 2,
}
am.move()
am.eat("小蟲子")
}