用Go语言实现工厂模式

golang中的struct没有构造函数,一般可以使用工厂模式来解决这个问题。这个模式本身很简单而且使用在业务较简单的情况下。一般用于小项目或者具体产品很少扩展的情况(这样工厂类才不用经常更改)。

代码结构如下:分别有main.go和student.go两个文件。

在student.go中:

package model//定义一个结构体
type student struct{Name stringscore float64
}//因为student结构体首字母是小写,因此是只能在model使用
//我们通过工厂模式来解决r
func NewStudent(n string, s float64) *student {return &student{Name : n,score : s,}
}//如果score字段首字母小写,则,在其它包不可以直接方法,我们可以提供一个方法
func (s *student) GetScore() float64{return s.score //ok
}

在main.go中:

package mainimport ("fmt""factory/model"
)func main() {//创建要给Student实例// var stu = model.Student{//     Name :"tom",//    Score : 78.9,// }//定student结构体是首字母小写,我们可以通过工厂模式来解决var stu = model.NewStudent("tom~", 98.8)fmt.Println(*stu) //&{....}fmt.Println("name=", stu.Name, " score=", stu.GetScore())
}

执行结果如下图所示:

Go面试:用Go语言实现工厂模式 (Golang经典编程案例)相关推荐

  1. 用Go语言实现登录验证 (Golang经典编程案例)

    用Go语言实现登录验证,有3次机会,如果用户名为 zhangsan ,密码为 123456 ,则提示登录成功,否则提示还有几次机会,次数用完,提示登录失败.代码如下: package mainimpo ...

  2. 用Go语言 轻松实现插入排序 (Golang经典编程案例)

    插入排序,代码如下: package main import ("fmt" )func InsertSort(arr *[7]int) {//完成第一次,给第二个元素找到合适的位置 ...

  3. 用Go语言 实现的数学相关案例汇总 (Golang经典编程案例)

    案例1:用Go语言打印1~100之间 9的倍数的整数的个数及总和,代码如下: package mainimport "fmt"func main() {var count uint ...

  4. 用Go语言 判断用户输入的年份是不是闰年 (Golang经典编程案例)

    判断一个年份是否是闰年,需要满足下面条件之一: 年份能被4整除,但不能被100整除: 能被400整除 下面用Go语言实现 判断用户输入的年份是不是闰年,代码如下: package mainimport ...

  5. Go语言中 经典的map排序方法及案例 (Golang经典编程案例)

    注意:Golang中的map默认是无序的,每次遍历,得到的输出结果可能不一样. Golang中的map排序: 将map的key放到切片中: 对切片排序: 遍历切片,然后来按key来输出map的值. 案 ...

  6. 用Go语言 实现快速排序 (Golang经典编程案例)

    快速排序,代码如下: package mainimport ("fmt" )//left 表示 数组左边的下标,right 表示数组右边的下标,array 表示要排序的数组 fun ...

  7. 用Go语言 模拟银行存款,取款,查询等操作 (Golang经典编程案例)

    案例:模拟银行存款,取款,查询等操作 银行卡的属性有账号,密码,余额:行为有存款,取款,查询等: 增加一个控制台菜单,可以让用户动态的输入命令和选项. 代码如下: package mainimport ...

  8. Go语言 闭包的最佳实践 (Golang经典编程案例)

    闭包:一个函数和与其相关的引用环境组合的一个整体. 最佳实践:编写一个程序,具体要求如下: 编写一个函数 makeSuffix(suffix string) ,可以接收一个文件后缀名(比如.jpg), ...

  9. 使用C语言实现工厂模式

    首先呢,给大家分享一个C语言练习的网站:C语言练习 工厂模式是软件设计中经常使用到的设计模式之一. 使用工厂模式时,在创建对象的过程中,不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创 ...

  10. 设计模式之工厂模式(披萨店案例)

    设计模式之工厂模式(披萨店案例) 披萨类如下: import java.util.ArrayList;public abstract class Pizza {String name;String d ...

最新文章

  1. 【BZOJ】3771: Triple FTT+生成函数
  2. Linux_文件系统、磁盘分区_RHEL7
  3. clickhouse 同步mysql_ClickHouse和他的朋友们(9)MySQL实时复制与实现
  4. 谷歌云盘Colaboratory如何载入文件
  5. 【BZOJ3518】点组计数 [欧拉函数]
  6. 构造方法,this,super关键字
  7. 全国计算机等级考试题库二级C操作题100套(第76套)
  8. 端到端BPM(带有DMN标记)
  9. 使用sar进行性能分析
  10. Duplicate Observed Data(复制“被监视数据”)
  11. iOS基础 - 控制器
  12. 在ASP.NET中防止注入攻击
  13. 创新元旦新年PSD分层海报,新气象开启!
  14. 鸿蒙app迁移,余承东宣布:明年3月P40首发鸿蒙系统!主流App将迁移鸿蒙
  15. IO流(1)-键盘录入学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件...
  16. Solaris 添加删除 用户和组
  17. 深入理解Java String 池概念(String pool concept)
  18. VC 消息钩子编程
  19. ATFX:美联储会议纪要发布后,美元指数逼近105关口
  20. web前端学习的职业发展方向

热门文章

  1. 怎么卸载虚拟机中的mysql_虚拟机卸载mysql数据库
  2. cad画固定长度的弧线_CAD绘制指定长度的圆弧的2种方法
  3. C语言中,int、char、float、double各占多少字节
  4. 加速度传感器,磁场传感器和陀螺仪传感器案例
  5. SCI分区及影响因子查看方法
  6. vivo手机删除内置应用及如何查看APP包
  7. 高级商务办公软件应用【12】
  8. MD文件阅读工具及配置
  9. 【读书笔记】《俞军产品方法论》——产品经理的枕边书
  10. Mybatis逆向工程(代码生成器)及其简单使用——及其报错处理