方法:
指包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。
例:
type Food struct{
color string
taste string
}
func ( fruit Food) Eat() string
{
return fmt.Sprintf("%v,%v)", fruit.color, fruit.taset)
}
Food为结构体类型,Eat为Food类型的方法, Eat方法的接受者是Food类型的值(或指针 func ( fruit * Food) Eat() string)。
apple := Food{"red", "sweet"}
或
apple := &Food{"red", "sweet"}
方法使用
apple.Eat()
接口:
接口是一种类型,指定了一个方法集,所有方法为接口类型就被认为是该接口。
个人的理解接口是定义了一种功能,而方法是实现这种功能的方法。而不同的接受者有不同的方法来实现这个功能。
例:
type judge inerface{
Eat() Food
}
定义了一个judge的接口,并包含了一个Eat()的方法
例程
package main
import (
"fmt"
)
type Food struct{
color string
taste string
}
type judge interface{
Eat()string
}
func ( fruit *Food) Eat() string{
return fmt.Sprintf("%v,%v",fruit.color,fruit.taste)
}
type FoodTaste struct{
taste string
}
func ( fruit *FoodTaste) Eat() string{
return fmt.Sprintf("%v",fruit.taste)
}
func main() {
var a judge
apple := Food{"red", "sweet"}
lemon := FoodTaste{"sour"}
a = &apple
fmt.Println(a.Eat())
a = &lemon
fmt.Println(a.Eat())
}
有疑问加站长微信联系(非本文作者)