Golang 仍然有面向对象编程的封装、继承多态的特性,只是实现的方式和其它 OOP 语言不一样。

1.1.1. 一、封装介绍。

封装(encapsulation)就是把抽象出的字段和对字段的操作封装在一起,数据被保护在内部。提供公共的方法给程序的其它包操作字段。

1.1.2. 二、封装的实现步骤。

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

2、给结构体提供一个创建实例的函数。

3、提供一个首字母大写的 Setter、Getter 方法。

示例如下:

  • 封装student.go的内容:
package model

// 首字母小写,其他包用不了。
type student struct {
    Name string
    age int // 首字母小写,其他包不能直接访问
}

// 使用这个创建 student 实例
func NewStudent(name string,age int) *student {
    return &student{
        Name:name,
        age:age,
    }
}

// getter
func (stu *student) GetAge() int {
    return stu.age
}
//setter
func (stu *student) SetAge(age int) {
    stu.age = age
}
  • main中使用如下:
package main

import (
    "fangfaDemo/model"
    "fmt"
)

func main() {
    stu := model.NewStudent("张三",19)
    fmt.Println(stu.GetAge()) // 19
    stu.SetAge(40) //调用setter
    fmt.Println(stu.GetAge()) // 40

}

results matching ""

    No results matching ""