郑州网站建设电话,惠州seo工作室,网页做网站的尺寸,北京代建网站面向过程转换到面向对象#xff0c;那么必然会涉及到几个特性#xff1a;封装#xff0c;继承#xff0c;多态#xff0c;那么Golang中的面向过程会有什么特性#xff1f;那我们来仔细说一说#xff1a;
封装#xff1a; 首先要一个类的概念#xff0c;类就像一下工厂… 面向过程转换到面向对象那么必然会涉及到几个特性封装继承多态那么Golang中的面向过程会有什么特性那我们来仔细说一说
封装 首先要一个类的概念类就像一下工厂你需要的衍生类直接通过工厂类可以实现简单来理解就是公共方法我们把它放在项目的最外层需要用到的时候直接调用该类这样做的好处就是减少代码量并且代码的容错率都健壮性都会有相应的提升
继承 简单来说就是继承父辈的一些东西代码中也是如此一些共用的属性我们可以把他们集中到一个特殊的父级代码中通过继承来实例化一些公共的属性这样做的好处统一管理公共的属性不会出现多个开发工程师写出了多个“哈姆雷特”的现象只要遵循公共属性通过继承获取父级的属性那么代码的通用性会大大提高
多态 同一个性质的不同表现方式比如接口里面定义的方法的具体实现是多种多样的继承父级获取的方法可以直接使用也可以重新定义后再使用,从而使一个方法有多种表现形式导致不同的结果产生 代码解释 封装和继承其实我们在前面的GIN框架中已经使用过比如我们应用的包都是封装好的类如果这样说还是无感的话那么GORM中有一个特别明显的用法比如我们在数据库的操作的过程中首先需要定义结构体在定义的过程中我们使用到了: gorm.Model ,这一个例子就很好的说明了这两个属性首先来说疯转看下源码
自定义结构体
type Userst struct { Uid uint64 json:uid Username string json:username gorm.Model }
gorm.Model指向的就是下面的代码
type Model struct { ID uint gorm:primarykey CreatedAt time.Time UpdatedAt time.Time DeletedAt DeletedAt gorm:index } 封装到这里就结束了那么继承还有一些注意点还需要深入的讲解所以我们下面就讲一下继承中的就近原则这个词是不是特别熟悉SQL中有一个最左原则最左原则有兴趣的可以课外了解一下我们主要讲解集成中的就近原则 机构体需要了解的概念 1.结构体,如果结构体的名字首字母大写可以被其他地方调用如果是小写其他地方不能被调用只能在当前作用域调用 2.结构体属性,如果是首字母大写可以被其他地方赋值指针方式来实现如果是小写其他地方不能被调用只能在当前作用域调用 打印结果 分析uid没有进行赋值所以输出的是0其他的字段赋值了输出的是赋予的值 那么我们换一个赋值方式 打印结果 从上面的代码来看两种赋值方式都可以其实上这是有区别的到底是有什么区别我们再看看新的代码 输出结果 分析为什么会这个样子实际上就是就近原则另外还有一种情况看下面的距离
代码段 输出结果 分析如果子级结构体集成父级结构体子级结构体与父级结构体有相同的属性先满足子集结构体的赋值这也是就近原则的一种体现并且以上例子也体现了多态结合这几个例子面向对象的三属性就可以理解清楚了