资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

Golang中--面向对象封装-创新互联

学习过Python或者java的朋友,都会习惯里面的类,而Golang中是没有类的概念,而有类似的概念结构体,结构体是一款功能强大的数据类型,能够简单的实现其他语言中类实现的功能,能够序列化json,支持继承,在继承时,继承父结构体的属性和父结构体的方法。同时结构体也像其他数据结构和函数一样,以大写字母开头的结构体能够导出本包,应用到其他包。而当开始定义的一些小写字母定义的结构体,我们想要用于其他包的时候,可以用工厂函数的方式实现。此外可以使用工厂函数结合定义某些方法实现面向对象的封装特性。

成都创新互联公司成都网站建设定制网站开发,是成都网站开发公司,为成都发电机维修提供网站建设服务,有成熟的网站定制合作流程,提供网站定制设计服务:原型图制作、网站创意设计、前端HTML5制作、后台程序开发等。成都网站改版热线:13518219792

封装的介绍:

    封装(encapsulation)就是把抽象出的字段和对字段的操作封装在一起,数据被保护在内部,程序的其 它包只有通过被授权的操作(方法),才能对字段进行操作。

封装的理解和好处:

1) 隐藏实现细节

2)  可以对数据进行验证,保证安全合理(某些字段)

如何体现封装
1) 对结构体中的属性进行封装

2) 通过方法,包 实现封装

封装的实现步骤


1) 将结构体、字段(属性)的首字母小写(不能导出了,其它包不能使用,类似 private)

2) 给结构体所在包 供一个工厂模式的函数,首字母大写。类似一个构造函数
3) 供一个首字母大写的 Set 方法(类似其它语言的 public),用于对属性判断并赋值

func (var 结构体类型名) SetXxx(参数列表) (返回值列表) {

//加入数据验证的业务逻辑

var.字段 = 参数}

4) 供一个首字母大写的 Get 方法(类似其它语言的 public),用于获取属性的值func (var 结构体类型名) GetXxx() {

return var.age; }

特别说明:在 Golang 开发中并没有特别强调封装,这点并不像 Java. 所以 醒学过 java 的朋友, 不用总是用 java 的语法特性来看待 Golang, Golang 本身对面向对象的特性做了简化的.

相关示例

Golang中--面向对象封装

package person

import "fmt"
//定义不能导出的结构体
type person struct {
   Name string
   age  int
   sal float64
}
//定义工厂模式的函数 首字母大写 类似构造函数
func  NewPerson(name string) *person{
   return &person{
      Name:name,
   }
}
//提供一个Set方法 设置年龄
func (user *person) Setage(age int) {
   if age >0  && age < 150 {
      user.age = age
   }else {
      fmt.Println("年龄数值不对!")
   }
}
//获取年龄
func (user *person) Getage() int{
   return  user.age
}
//更改年龄
func (user *person) Updateage(age int) int{
    user.age =age
   return  user.age
}
//更改姓名
func  (user *person) Updatename(name string) string{
   user.Name=name
   return  user.Name
}

在另一个包中调用person

main

(
   )

() {
   person.()
   fmt.()
   .()
   fmt.()
   .()
   fmt.()
   .()
   fmt.()
   fmt.()
   .()
   fmt.()



}

结果

Golang中--面向对象封装

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享题目:Golang中--面向对象封装-创新互联
路径分享:http://cdkjz.cn/article/eihis.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220