golang工厂模式
访问私有字段
main.go
package main
import (
"fmt"
"github.com/面向对象编程/工厂模式/model"
)
func main() {
// var stu = model.Student{
// Name: "tom",
// Score: 78.9,
// }
var stu = model.NewStudent("tom~", 88.8)
fmt.Println(*stu)
fmt.Println("name=", stu.Name, "score=", stu.GetScore())
}
student.go
package model
type student struct {
Name string
score float64
}
//因为student结构体首字母是小写,因此只能在model使用
//通过工厂模式可以解决
func NewStudent(n string, s float64) *student {
return &student{
Name: n,
score: s,
}
}
//如果score字段首字母小写,则在其他包不可以直接访问
//可以使用如下方法
func (s *student) GetScore() float64 {
return s.score
}

浙公网安备 33010602011771号