Go语言结构体成员能否是函数,从而实现类似类的成员函数的机制呢?答案是肯定的。
package main import "fmt" type stru struct { testfunc1 func() testfunc2 func(a int) int } func test(a int) int { fmt.Println(a) return 1 } func main() { s := &stru{ testfunc1: func() { fmt.Println("hello") }, testfunc2: test} s.testfunc1() fmt.Println(s.testfunc2(1)) }
这样,就能实现在通过结构体封装成员的同时,实现成员函数逻辑实现的后绑定,从而实现一种不具有继承机制的类似虚函数的实现。