package main
import "fmt"
import "time"
type cc interface{
MyPrint()
MyPrint2()
}
type cc1 struct{
a int
}
type cc2 struct{
*cc1
}
type cc3 struct{
cc1
}
func(c *cc1)MyPrint(){
fmt.Println("cc1 myprint.")
}
func(c cc1)MyPrint2(){
fmt.Println("--------cc1 myprint2.")
}
func(c *cc2)MyPrint(){
fmt.Println("cc2 myprint.")
}
func(c *cc3)MyPrint(){
fmt.Println("cc3 myprint.")
}
func main(){
defer func() {
if err := recover(); err != nil{
fmt.Println("recover err:", err)
duration := time.Duration(10)*time.Second
time.Sleep(duration)
}
}()
c := &cc1{}
c.MyPrint()
(*c).MyPrint()
c2 := &cc2{}
c2.MyPrint()
(*c2).MyPrint()
c22 := cc2{}
c22.MyPrint()
//c2.MyPrint2() //error
//(*c2).MyPrint2() //error
//c22.MyPrint2() //error
c222 := &cc2{&cc1{}}
c222 .MyPrint2() // ok,上面报error,是因为指针未初始化...无语
c3 := &cc3{}
c3.MyPrint()
(*c3).MyPrint()
c33 := cc3{}
c33.MyPrint()
c3.MyPrint2()
(*c3).MyPrint2()
c33.MyPrint2()
duration := time.Duration(300)*time.Second
time.Sleep(duration)
}
对比1:对比