赞
踩
提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。
package Iterator type Iterator interface { Index() *int Value() interface{} HasNext() bool Next() } type ArrayIterator struct { array []interface{} index *int } func (a *ArrayIterator) Index() *int { return a.index } func (a *ArrayIterator) Value() interface{} { return a.array[*a.index] } func (a *ArrayIterator) HasNext() bool { return *a.index+1<=len(a.array) } func (a *ArrayIterator) Next() { if a.HasNext(){ *a.index++ } }
package Iterator import ( "fmt" "testing" ) func TestArrayIterator_Value(t *testing.T) { array := []interface{}{6,8,7,2,5,0,3,2} a := 0 iterator := ArrayIterator{array: array, index: &a} for it := iterator; iterator.HasNext(); iterator.Next() { index, value := it.Index(), it.Value().(int) for value != array[*index].(int) { fmt.Println("error") } fmt.Println(*index, value) } }
设计模式Git源代码
00简单工厂模式
01工厂方法模式
02抽象工厂模式
03外观模式
04建造者模式
05桥接模式
06命令模式
07迭代器模式
08模板模式
09访问者模式
10备忘录模式
11责任链模式
12中介模式
13原型模式
14状态模式
15策略模式
16享元模式
17组合模式
18解释器模式
19单例模式
20适配器模式
21代理模式
22装饰器模式
23观察者模式
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。