Go编程之接口作结构体属性

本文探讨了如何在Go编程中将接口作为结构体的属性来使用。通过实例,展示了如何创建一个接口A,一个结构体B,以及一个实现A接口的结构体C。在NewB函数中,C的实例被赋值给B的A接口属性。这样,可以调用b.a.NameGet()方法,甚至将其作为服务程序,通过开启协程实现定时或实时调用。这种模式在以太坊等系统中可能应用,例如每5秒调用一次接口函数。
摘要由CSDN通过智能技术生成
最近在看Ethereum源码,发现在它的BlockChain结构体里面有属性直接是接口,它有个set函数,用于设置接口的,传的值为实现这个接口的一个结构体。下面自己试着写了一个小demo:
package main

import (
	"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接口&

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值