在 Go 语言中,一个 struct 实现了某个接口里的所有方法,就叫做这个 struct 实现了该接口。
demo
main.go
package main
import (
"example/study/tool"
"fmt"
)
func main() {
name:="Tom"
s,err:=tool.New(name)
if err!=nil{
fmt.Println(err)
}
fmt.Println(s.Listen("english"))
fmt.Println(s.Speak("english"))
fmt.Println(s.Read("english"))
fmt.Println(s.Write("english"))
}
too/too.go
package tool
import "example/pholcus/common/goutil/errors"
type Study interface {
Listen(msg string) string
Speak(msg string) string
Read(msg string) string
Write(msg string) string
}
//之所以定义为私有的结构体,是因为不想在其他地方被使用,比如后面将 Name 改成 UserName 只需要在本包内修改即可。
type study struct {
Name string
}
func(s *study)Listen(msg string)string{
return s.Name+"听"+msg
}
func(s *study)Speak(msg string)string{
return s.Name+"说"+msg
}
func(s *study)Read(msg string)string{
return s.Name+"读"+msg
}
func(s *study)Write(msg string)string{
return s.Name+"写"+msg
}
func New(name string)(Study,error){
if name==""{
return nil,errors.New("name required")
}
return &study{
Name:name,
},nil
}
网友评论