第一步,新建立 test/testInterface.go 简单实现print功能的基本框架
package testInterface
type PrintMethod interface {
OwnPrintMethod()
}
// 形参是接口类型,只要实现了接口的方法即可使用
func MyPrintMethod(pm PrintMethod) {
pm.OwnPrintMethod()
}
第二步:使用方法,只要Book,Sentense实现接口方法OwnPrintMethod即可使用定义好的接口
package main
import (
"fmt"
"goweb/test"
)
// 定义Book 结构体
type Book struct {
Content string
}
// 定义结构体
type Sentense struct {
Content string
}
// 实现接口方法
func (b Book) OwnPrintMethod() {
fmt.Println(b.Content)
}
// 实现接口方法
func (s Sentense) OwnPrintMethod() {
fmt.Println(s.Content)
}
func main() {
fmt.Println("start \n")
// 初始化赋值
book := Book{Content:"this is book"}
// 初始化赋值
sentense := Sentense{Content:"this is sentense"}
testInterface.MyPrintMethod(book)
testInterface.MyPrintMethod(sentense)
fmt.Println("\n end \n")
}
这里充分体现了使用者定义的哲学,Book和Sentense分别定义了自己的Print模式,我们设计的Print模块负责基本功能的实现