2022-5-12 实习Day34
1、冒烟测试-贸金系统-退汇业务申报问题,提交时无需申报 –2小时 100%
2、汇出汇款,收款人信息非强制必输,申报信息校验要求必输入。排查后收款人信息需要输入完全–2小时 100%
3、bugfix中费用管理交易账务信息扣费币种下拉为空已恢复。–2小时 100%
Golang编程学习(part 29)
1、工厂模式
Golang的结构体没有构造函数,通常可以使用工厂模式来解决这个问题
1 2 3 4
| package model type Student struct { Name string }
|
看上面的代码,这里的Student的首字母S是大写的,如果我们想在其他包创建Student实例(比如main包),引入model包后,就可以直接创建Student结构体变量。但是问题来了,如果首字母是小写的,比如是 type student struct{…}就不行了,怎么办——>工厂模式来解决
2、工厂模式来解决问题
① 使用工厂模式实现跨包创建结构体实例(变量)的案例:如果model包的结构体变量首字母大写,引入后直接使用,没有问题。但是首字母小写的结构体不行
1 2 3 4 5 6 7 8 9 10
| package model type Student struct { Name string Score float64 }
type person struct { name string score float64 }
|
1 2 3 4 5 6 7 8 9 10 11 12
| package main import ( "Test1/model" "fmt" )
func main() { var stu = model.Student{"tom", 78} fmt.Println(stu)
}
|
② 使用工厂模式解决上面的问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| package model type student struct { name string score float64 }
func NewStudent(n string, s float64) *student { return &student{ Name : n, Score : s, } }
|
③ 思考题:如果model包的student的结构体字段Score改成score,我们还能正常访问吗?又应该如何解决这个问题呢
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| type student struct { Name string score float64 }
func NewStudent(n string, s float64) *student { return &student { Name : n, score : s, } }
func (s *student) GetScore() float64 { return (*s).score }
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| package main
import ( "Test1/model" "fmt" )
func main() { student := model.NewStudent("张三", 25) score := student.GetScore() fmt.Println(score) }
|