https://segmentfault.com/a/
Test.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 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()) }
|