package main
import "fmt"
// 定义一个结构体
type student struct {
Name string
score float64
}
// student 因为student结构体首字母是小写,因此是只能在model使用
// 我们通过工厂模式来解决
func NewStudent(n string, s float64) *student {
return &student{
Name: n,
score: s,
}
}
// 如果score字段首字母小写,则,在其它包不可以直接方法,我们可以提供一个方法
func (s *student) GetScore() float64{
return s.score
}
func main() {
/*
实现一个工厂模式
简单工厂模式是属于创建型模式,简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。
简单工厂模式是 GoLang 最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
*/
//定student结构体是首字母小写,我们可以通过工厂模式来解决
var stu = NewStudent("tom~", 98.8)
fmt.Println(*stu) //&{....}
fmt.Println("name=", stu.Name, " score=", stu.GetScore())
}