ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## **工厂模式** Golang的结构体没有构造函数,通常可以使用工厂模式来解决这个问题。 ``` 一个结构体的声明是这样的: packagemodel typeStudentstruct {Namestring... } 因为这里的Student的首字母S是大写的,如果我们想在其它包创建Student的实例(比如main包), 引入model包后,就可以直接创建Student结构体的变量(实例)。但是问题来了,如果首字母是小写的, 比如是typestudentstruct{....}就不不行了,怎么办\--->工厂模式来解决. ``` **工厂模式来解决问题** 使用工厂模式实现跨包创建结构体实例(变量)的案例: 如果model包的结构体变量首字母大写,引入后,直接使用,没有问题 ![](https://img.kancloud.cn/f6/9e/f69ed3eb92defc52ea1a5d1815bc21cd_889x402.png) 如果model包的结构体变量首字母小写,引入后,不能直接使用,可以工厂模式解决,看老师演示,代码: ![](https://img.kancloud.cn/09/5a/095a1549810eea2e3bac32ef37f43d9c_536x840.png) 同学们思考一下,如果model包的student的结构体的字段Score改成score,我们还能正常访问吗?又应该如何解决这个问题呢?\[老师给出思路,学员自己完成\] ![](https://img.kancloud.cn/d3/19/d319d892bec67ab2ce12158ca3fb13e8_728x490.png) ![](https://img.kancloud.cn/68/66/6866e4bc25cb0916737a0d4816307e6e_734x502.png)