From 4595a991b2fd1caa22a24079e5335d80a8cef9fd Mon Sep 17 00:00:00 2001 From: leisore Date: Wed, 10 Jun 2015 21:03:01 +0800 Subject: [PATCH] =?UTF-8?q?+=20=E6=B7=BB=E5=8A=A0ch10.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eBook/10.2.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 eBook/10.2.md diff --git a/eBook/10.2.md b/eBook/10.2.md new file mode 100644 index 0000000..cff818b --- /dev/null +++ b/eBook/10.2.md @@ -0,0 +1,33 @@ +# 10.2 使用工厂方法创建结构体实例 + +## 10.2.1 结构体工厂 + +Go语言不支持像面向对象编程语言中那样的构造子,但是可以很容易的使用Go实现“类构造子工厂“函数。为了方便常常会为一个类型定义一个工厂,按照约定工厂的名字以new或New开头。假设定义了如下的File结构体类型: + +```go +type File struct { + fd int // 文件描述符 + name string // 文件名 +} +``` + +下面是这个结构体类型对应的工厂函数,它返回一个指向结构体实例的指针: + +```go +func NewFile(fd int, name string) *File { + if fd < 0 { + return nil + } + + return &File(id, name) +} +``` + +**练习** + +*练习 10.1* + +## 链接 +- [目录](directory.md) +- 上一节:[10 结构(struct)与方法(method)](10.0.md) +- 下一节:[10.2 使用工厂方法创建结构体实例](10.2.md)