golang面向对象编程思想
抽象介绍:
在定义一个结构体的时候,实际上就是把一类事物的共有属性(字段)和行为(方法) 提取出来,形成一个物理模型(模板),这种研究问题的方法称为抽象。
封装:
把抽象出的字段和对字段的操作封装在一起,数据被保护在内部,程序的其它包只有通过被授权的操作(方法),才能对字段进行操作。
1)将结构体、字段(属性)的首字母小写
2)给结构体所在包提供一个工厂模式的函数,首字母大写,类似一个构造函数
3)提供一个首字母大写的Set方法(类似其它语言的public),用于对属性判断并赋值
model.go
package model import ( "fmt" ) type account struct { username string password string balance float64 } func NewAccount() *account { return &account{} } // 设置账号 func (user *account) SetUsername(username string) { if len(username) < 6 && len(username) > 10 { fmt.Println("账号长度必须是6到10位") return } user.username = username } func (user *account) GetUsername() string { return user.username } // 设置密码 func (user *account) SetPassword(password string) { if len(password) != 6 { fmt.Println("密码必须是6位") return } user.password = password } func (user *account) GetPassword() string { return user.password } // 设置余额 func (user *account) SetBalance(balance float64) { if balance < 20 { fmt.Println("余额必须大于20") return } user.balance = balance } func (user *account) GetBalance() float64 { return user.balance }
main.go
package main import ( "fmt" "model" ) func main() { user := model.NewAccount() user.SetUsername("admin123") user.SetPassword("123456") user.SetBalance(20) fmt.Println(user.GetUsername(), user.GetPassword(), user.GetBalance()) }
继承:
相关推荐
Lzs 2020-10-23
Justhavefun 2020-10-22
周游列国之仕子 2020-09-15
风雨断肠人 2020-09-04
聚合室 2020-11-16
零 2020-09-18
jacktangj 2020-10-14
ChaITSimpleLove 2020-10-06
Andrea0 2020-09-18
afanti 2020-09-16
88234852 2020-09-15
YClimb 2020-09-15
卖口粥湛蓝的天空 2020-09-15
stulen 2020-09-15
pythonxuexi 2020-09-06
abfdada 2020-08-26
梦的天空 2020-08-25