Test.go
package test
func NewTest() ITestIntf {
return &test{""}
}
type ITestIntf interface {
GetName() string
SetName(string) ITestIntf
}
type test struct {
name string
}
func (t *test) GetName() string {
return (*t).name
}
func (t *test) SetName(n string) ITestIntf {
(*t).name =n
return t
}
SubTest.go
package test
func NewSubTest() ISubTestIntf {
return &subTest{NewTest(), "", 0}
}
type ISubTestIntf interface {
ITestIntf
GetSex() string
SetSex(string) ISubTestIntf
GetAge() int
SetAge(int) ISubTestIntf
}
func (t *subTest) GetSex() string {
return (*t).sex
}
func (t *subTest) SetSex(s string) ISubTestIntf {
(*t).sex =s
return t
}
func (t *subTest) GetAge() int {
return (*t).age
}
func (t *subTest) SetAge(a int) ISubTestIntf {
(*t).age =a
return t
}
chan.go
import (
"fmt"
"test"
)
func main() {
var t ITestIntf
t = NewTest().SetName("张三")
var s ISubTestIntf
s = NewSubTest()
fmt.Println(t.GetName())
s.SetAge(12).SetSex("女").SetName("李四")//这里不是很完美,父接口的方法必须放到后面。
fmt.Println("name:",s.GetName(),"sex:", s.GetSex(), "age:", s.GetAge())
}