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 }