本文共 620 字,大约阅读时间需要 2 分钟。
最近在看Ethereum源码,发现在它的BlockChain结构体里面有属性直接是接口,它有个set函数,用于设置接口的,传的值为实现这个接口的一个结构体。下面自己试着写了一个小demo:package mainimport ( "fmt")type A interface { NameGet() string}type B struct { i int a A}func NewB(a A) *B { nb := &B{i: 2} nb.SetA(a) return nb}func (b *B) SetA(a A) { b.a = a}type C struct { name string}func NewC() *C { c := &C{"chen"} return c}func (c *C) NameGet() string { return c.name}func main() { b := NewB(NewC()) fmt.Println(b.a.NameGet())}
A是一个接口,B是一个结构体,有个A接口属性,它有个方法用于设置A接口,在NewB里面调用,C是一个实现了A里面接口的结构体,把它的对象传给NewB做参数。这样我们可以调用b.a.NameGet()方法。这里面,我们可以把这个接口函数作为一个服务程序,开个协程,可以实时或者定时调用。以太坊里面应该就是这个原理,应该是5s去调用一次那个接口函数。
转载地址:http://mmsvi.baihongyu.com/