This commit is contained in:
Xargin 2016-12-15 15:27:24 +08:00
parent d19d669661
commit 649771641a

View File

@ -85,6 +85,6 @@ fmt.Println(day.Seconds()) // "86400"
另一个例子将IntSet和本章开头的geometry.Path进行对比。Path被定义为一个slice类型这允许其调用slice的字面方法来对其内部的points用range进行迭代遍历在这一点上IntSet是没有办法让你这么做的。
这两种类型决定性的不同geometry.Path的本质是一个坐标点的序列不多也不少我们可以预见到之后也并不会给他增加额外的字段所以在geometry包中将Path暴露为一个slice。相比之下IntSet仅仅是在这里用了一个[]uint64的slice。这个类型还可以用[]uint类型来表示或者我们甚至可以用其它完全不同的占用更小内存空间的东西来表示这个集合所以我们可能还会需要额外的字段来在这个类型中记录元素的个数。也正是因为这些原因我们让IntSet对调用方透明。
这两种类型决定性的不同geometry.Path的本质是一个坐标点的序列不多也不少我们可以预见到之后也并不会给他增加额外的字段所以在geometry包中将Path暴露为一个slice。相比之下IntSet仅仅是在这里用了一个[]uint64的slice。这个类型还可以用[]uint类型来表示或者我们甚至可以用其它完全不同的占用更小内存空间的东西来表示这个集合所以我们可能还会需要额外的字段来在这个类型中记录元素的个数。也正是因为这些原因我们让IntSet对调用方透明。
在这章中我们学到了如何将方法与命名类型进行组合并且知道了如何调用这些方法。尽管方法对于OOP编程来说至关重要但他们只是OOP编程里的半边天。为了完成OOP我们还需要接口。Go里的接口会在下一章中介绍。