|
|
@@ -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)
|