原來結構體函式還能這樣用

myml發表於2017-01-06

平常使用結構體函式是這麼用

type A struct {
}

func (a *A) Print() {
    fmt.Println("this is A")
}

func main() {
    a := A{}
    a.Print()
}

恩,沒啥問題,然後還可以這樣用

type A struct {
}

func (a A) Print() {
    fmt.Println("this is A")
}
func (a *A) Print2() {
    fmt.Println("this is A")
}

func main() {
    a := A{}
    A.Print(a)
    (*A).Print2(&a)
}

結合介面的話就可以這樣

type I interface {
    Print()
}
type A struct {
}

func (a *A) Print() {
    fmt.Println("this is A")
}

type B struct {
}

func (b *B) Print() {
    fmt.Println("this is B")
}

func main() {
    a := A{}
    b := B{}
    I.Print(&a)
    I.Print(&b)
}

相關文章