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
}

  

posted @ 2022-03-09 13:34  Star_Gazer  阅读(27)  评论(0编辑  收藏  举报