泊爷带你学go -- 经典的继承与接口 简直吊炸天 !
package main import (
"fmt"
) type TeamBase struct {
m_TeamId uint64
m_Rid uint32
m_RoomRule uint32
m_Players []uint64
} type TeamInt interface {
Init()
CreateTeam(accountId uint64, rid uint32) bool
AddTeamPlayer(accountId uint64) bool
DelTeamPlayer(accountId uint64) bool
GetTeamBase() *TeamBase
} type TeamNormal struct {
TeamBase
} func (this *TeamNormal) Init() {
this.TeamBase.m_Players = make([]uint64, 0)
this.TeamBase.m_TeamId = 0
this.TeamBase.m_Rid = 0
this.TeamBase.m_RoomRule = 0
} func (this *TeamNormal) CreateTeam(accountId uint64, rid uint32) bool {
this.TeamBase.m_TeamId = accountId
this.TeamBase.m_Rid = rid
this.TeamBase.m_Players = append(this.TeamBase.m_Players, accountId)
return true
} func (this *TeamNormal) AddTeamPlayer(accountId uint64) bool {
this.TeamBase.m_Players = append(this.TeamBase.m_Players, accountId)
return true
} func (this *TeamNormal) DelTeamPlayer(accountId uint64) bool {
return true
} func (this *TeamNormal) GetTeamBase() *TeamBase {
return &this.TeamBase
} type TeamManager struct {
m_teamList map[uint64]TeamInt
} var teamMgr *TeamManager func TeamManager_GetMe() *TeamManager {
if teamMgr == nil {
teamMgr = &TeamManager{
m_teamList: make(map[uint64]TeamInt),
}
}
return teamMgr
} func (this *TeamManager) CreateTeam(teamId uint64, rid uint32) bool {
this.DelTeam(teamId)
tn := &TeamNormal{}
tn.Init()
tn.CreateTeam(teamId, rid)
this.m_teamList[teamId] = interface{}(tn).(TeamInt)
return true
} func (this *TeamManager) DelTeam(teamId uint64) {
if this.GetTeam(teamId) != nil {
delete(this.m_teamList, teamId)
}
} func (this *TeamManager) GetTeam(teamId uint64) TeamInt {
k, err := this.m_teamList[teamId]
if !err {
return nil
}
return k
}
泊爷带你学go -- 经典的继承与接口 简直吊炸天 !的更多相关文章
- 泊爷带你学go -- 反射的经典玩法
package main import ( "fmt" "reflect" ) type order struct { ordId int customerId ...
- 泊爷带你学go -- redis连接池的操作
package main import ( "common" "fmt" "proto" "strconv" " ...
- 泊爷带你学go -- 加锁的问题
package main import ( "fmt" "sync" ) var l sync.Mutex var a string func f() { a ...
- 我要带徒弟学写JAVA架构,引路架构师之路(Jeecg开源社区)
带徒弟学JAVA架构(Jeecg社区) Java程序员如何打破工作2,3年的瓶颈问题,如何更上一层楼? 太多的巧合,让我接触到了开源,通过JEECG与很多朋友交流后,让我有了帮助别 ...
- 【凯子哥带你学Framework】Activity界面显示全解析(下)
咱们接着上篇继续讲,上篇没看的请戳:[凯子哥带你学Framework]Activity界面显示全解析(上) 如何验证上一个问题 首先,说明一下运行条件: //主题 name="AppThem ...
- 带你学C带你飞!
C语言免费课程推荐:带你学C带你飞! 想学习C语言,首先就要了解什么是C语言: C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码 ...
- 老段带你学鸟哥Linux视频教程 包含基础班+提高班
老段带你学鸟哥Linux视频教程 包含基础班+提高班,附带pdf文档. 目录结构如下: 目录:/-老段带你学鸟哥Linux视频教程 [.9G] ┣━━老段带你学鸟哥-服务器篇 [1009.4M] ┃ ...
- 手摸手带你学移动端WEB开发
HTML常用标签总结 手摸手带你学CSS HTML5与CSS3知识点总结 手摸手带你学移动端WEB开发 好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/Ro ...
- OpenGL边用边学------2 经典照相机模型
https://blog.csdn.net/smstong/article/details/50290327 实际照相步骤 1 布置场景和调整照相机位置 3 选择镜头对焦Focus 4 按下快门 5 ...
随机推荐
- Python自学:第三章 动手试一试 3-4、3-5
# -*- coding: GBK -*- liebiao = ["zhang", "li", "wang", "zhou&quo ...
- 成功解决internal/modules/cjs/loader.js:596 throw err; ^ Error: Cannot find module 'express'
^ Error: Cannot find module 'express'根据提示我们就可以知道,没有找到express这个模块,解决办法就是:npm install express
- 大数据分析-excel常用技巧
在用EXCEL制表时,经常要要用到填充,比如1到100行内容相同或引用公式,大多数人会用鼠标拖来拖去,例如: 在第一行的A1单元格右下方 鼠标指针 变 实心黑十字 向下拉或向右,向左拉 我想拉100行 ...
- IIS部署发布flask网站
先参考http://python.jobbole.com/87655/,会发现失败. 再参考https://blog.csdn.net/david_lee13/article/details/8198 ...
- OSS文件上传到阿里云
<script src="http://gosspublic.alicdn.com/aliyun-oss-sdk-4.4.4.min.js"></script&g ...
- hdu多校第4场E. Matrix from Arrays HDU 二维前缀和
Problem E. Matrix from Arrays Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total S ...
- 在递归函数中使用JQuery.Deferred,异步请求中的同步执行...
标题不知道怎么起合适,其实需求很简单: 黑色背景的容器在页面打开时是隐藏的,点击提交后显示. 然后开始执行递归方法,每次ajax请求完成时,更新容器内容. 在全部执行完成后输出“执行完成”. subm ...
- css3 翻牌动画
最近做了一个特效,css是从网上找的,地址是这个: CSS3 animate flip下的纸牌翻转效果实例页面 把其中核心的css代码扒出来如下: /* The properties in this ...
- js简单封装样式
class Foo{ constructor(name) { this.name = name } greet() { console.log('hello this is',this.name) } ...
- MATLAB绘图hist
刚登上号,已经学了一半了,就从现在开始写吧 以前学过的东西老忘,所以就注册个账号就当做记笔记吧 MATLAB在原来的数组中增加新行 A=[A;B]%B是要增加的行: hist使用方法 y=4*rand ...