分享
  1. 首页
  2. 文章

golang 包继承

niechaoya · · 3072 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

以我自己的项目为例,项目的目录结构是这样的:

1、我有两个项目,一个项目做为基础项目,里面的方法大都具有通用性。

2、还有一个正在开发的项目,这个项目需要调用基础项目里的很多函数。

现在基础项目里有一个包含所有对数据库进行操作的函数的文件,名叫servicebase.go,包名:db

代码如下:

packaeg db

typeServiceBasestruct{

DBE*xorm.Engine
}

在正在开发的项目里我建了一个baseservice.go(包名:base)这个文件,这个文件里面的函数也都具有通用性,它作为一个基础函数库供我当前项目调用,就是说里面的函数不是为了某一个模块设计的,而是在项目中很多模块都需要用到的函数。


现在我让baseservice去继承ServiceBase,代码如下:

package base

typeBaseServicestruct{

ServiceBase
}

这样一来,baseservice就继承了ServiceBase包里面的函数,当你取得了指向BaseService的指针的时候,就可以通过指针调用ServiceBase和BaseService里面的函数了。

这不是重点,重点是这个项目的其他模块的service也应该来继承BaseService ,代码如下:

package foodsafety

typeFoodSafetyServicestruct{

BaseService
}
那么为什么要这样做呢?因为其他模块如果继承了baseservice,就同时继承了servicebase,指向foodsafetyservice这个结构体的指针就可以
同时调用servicebase、baseservice和foodsafetyservice这三个模块里的函数。
注意:如果这三个文件里有同名的函数,用指向foodsafetyservice的指针调用这个同名函数的时候,系统会调用foodsafetyservice这个文件里的函数,这就和面向对象
中的函数重写一样。


那又有人要问了,就算是这样那又怎么样呢?
这样做有以下几个好处:
1、如果你的foodsafetyservice包含的是servicebase,那么当你需要调用当前项目某个公共函数的时候,是不是需要取得指向baseservice的指针,然后再用这个指针去
调用公共函数。但是如果你的foodsafetyservice包含的是baseservice,这一步就可以省略了,这在一定程度上可以简化程序的代码。
2、项目的层次结构更加清楚。



有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:niechaoya

查看原文:golang 包继承

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
3072 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏