泊爷带你学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-作用域解析
局部作用域和全局作用域:局部作用域不能修改全局作用域的变量 count = 10 def outer(): #global count 局部变量改成全局变量,global声明一下即可.就可以修改了. ...
- oracle创建删除表空间
create [undo|temporary] tablespace orcp datafile|tempfile 'E:\orcle\oracleBaseDir\oradata\orcp\orcp. ...
- myEclipse和eclipse从debug视图自动跳回default视图。
本来是吐槽文,找到了解决的插件,就改改标题了. debug的时候,可以从default视图自动跳转到debug视图,退出debug的时候,却不能自动切换回default视图. https://bugs ...
- python 爬虫新解
关于python爬虫多个库的选择反反复复,总是不知道选择哪个,通过试过多个晚上的选择 reques Beautifulsoup 以上两个库足够爬虫,已反爬虫网站数据的爬取.先上代码: 库的调用: 网页 ...
- python -- 函数进阶
一.函数参数-动态传参 1.形参: * 在形参位置, 表示此参数为不定参数,接受的是位置参数 并且接收到的位置参数的动态传参都是元组 def fu ...
- ThreadLocal之我所见
网上有很多关于ThreadLocal的文章,大部分都提到了多线程之间共享资源的问题.其实ThreadLocal和多线程之间一点关系都没有.如果有,我怕是它的名字改成ThreadShare是不是更合适呢 ...
- css--颜色值
首先,#000000格式的颜色被成为十六进制颜色码: 6位数分为三组,每两位数一组,依次是红.黄.蓝颜色的强度: #000000可以缩写为#000:黑色 其他类推
- 在Mac上安装office2016(破解版)
doffice2016下载地址: 链接:https://pan.baidu.com/s/1V6I_QQiK2VK1rf0v4aVk5g 密码:3ijf 执行破解程序: 链接:https://pan. ...
- php中excel以及cvs等导入以及导出
一般网站后台都有人员导入或者是订单导出之类的操作,今天分享一下几种php excel cvs等文件导入导出的办法. 第一种比较简单的,自己写的,不引用任何excel类.但是会有bug,代码如下: 首先 ...
- html布局(盒子)
在body里面放置两个盒子,里面盒子设置margin-top,外层盒子生效?在里面盒子上面加一个块元素,设置高度 表单 form action="地址" method=" ...