Go基础学习-面向对象

作为一门面向对象的语言,必然少不了接口,Go的接口叫做非侵入式,虽然不存在继承的语法,但是有继承的概念。

如下,一个Connector接口,包含一个Connect()方法,一个USB接口,包含了Connector接口和一个Name()方法,然后两个类PhoneConnector和TVConnector分别实现了USB接口,一个全局Disconnect()方法,接口一个Connector参数。

package main

import (
	"fmt"
)

type Connector interface {
	Connect()
}

type PhoneConnector struct {
	name string
}

type TVConnector struct {
	name string
}

type USB interface {
	Name() string
	Connector
}

func (pc PhoneConnector) Connect() {
	fmt.Println("Connect:", pc.name)
}

func (pc PhoneConnector) Name() string {
	return pc.name
}

func (tv TVConnector) Connect() {
	fmt.Println("Connect:", tv.name)
}

func (tv TVConnector) Name() string {
	return tv.name
}

func Disconnect(usb Connector) {
	switch v := usb.(type) {
	case TVConnector:
		fmt.Println("Disconnect:", v.name)
	case PhoneConnector:
		fmt.Println("Disconnect:", v.name)
	default:
		fmt.Println("Unknown device")
	}
}

func main() {
	pc := PhoneConnector{"PhoneConnector"}
	tv := TVConnector{"TVConnector"}
	pc.Connect()
	tv.Connect()
	Disconnect(pc)
	Disconnect(tv)
}

对于以上程序,有个疑问,假如把PhoneConnector和TVConnector的两个实现函数的接收器修改为指针类型,DisConnect函数该如何写呢?试了好久无果。。。

内容概要:本文深入研究了基于深度强化学习(DRL)的微网储能系统控制策略。首先介绍了微网系统的组成及其特性,重点探讨了光伏发电、储能系统和负荷系统的关键组件数学模型。接着详细描述了Simulink仿真设计实现,包括微网环境模拟类(MicrogridEnv)、双重深度Q网络(Double DQN)算法的实现以及训练过程。为了验证该方法的有效性,文章还进行了对比实验,分别测试了规则策略、传统优化方法和DDQN策略的表现。实验结果显示,DDQN策略在成本节约、SOC合规率等方面明显优于其他两种方法。最后,本文提出了创新点与贡献总结,包括仿真-学习一体化框架、改进的DRL算法以及多维度验证,并展望了后续研究方向如多时间尺度优化、多能源协同、不确定性处理等。 适用人群:从事电力系统、微网技术研究的专业人士,以及对深度强化学习应用于能源领域感兴趣的科研人员和工程师。 使用场景及目标:①掌握微网储能系统的基本构成与工作原理;②理解如何利用深度强化学习优化微网储能控制策略;③学习具体的算法实现细节,包括环境搭建、DDQN算法实现和训练流程;④对比不同控制策略的效果,评估DDQN策略的优势。 其他说明:本文不仅提供了理论分析和技术实现,还展示了详细的实验验证过程,通过具体的实验数据证明了所提方法的有效性。此外,文中提及的多种改进措施和技术细节对于实际工程项目具有重要的参考价值。阅读本文有助于读者全面了解微网储能控制领域的最新进展,为相关研究和技术开发提供有益的指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值