golang工厂模式

1|0访问私有字段

main.go

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
}

  


__EOF__

本文作者StarGazer
本文链接https://www.cnblogs.com/PatrickStarGazer/p/15984766.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Star_Gazer  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示