go 模仿JAVA,面向接口/链式编程
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()) }