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
}