首页 > 后端开发 > Golang > 正文

如何用Golang实现迭代器模式遍历集合_Golang 迭代器模式使用示例

P粉602998670
发布: 2025-11-25 15:10:02
原创
531人浏览过
迭代器模式通过接口封装遍历逻辑,Go中可用接口与结构体实现;定义HasNext、Next、Value方法,结合StringSlice及其迭代器示例实现集合遍历。

如何用golang实现迭代器模式遍历集合_golang 迭代器模式使用示例

在Go语言中实现迭代器模式,可以让我们以统一的方式遍历不同类型的集合,而无需暴露其内部结构。虽然Go没有像Java或C++那样的接口继承体系,但通过接口和结构体的组合,依然能简洁地实现迭代器模式。

什么是迭代器模式

迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。这种设计模式属于行为型模式,常用于封装遍历逻辑。

定义迭代器接口

我们先定义一个通用的迭代器接口,包含基本的 Next()Value() 方法:

type Iterator interface {
    HasNext() bool
    Next() interface{}
    Value() interface{}
}
登录后复制

HasNext 判断是否还有下一个元素,Next 移动到下一个元素并返回当前值,Value 获取当前元素的值。

立即学习go语言免费学习笔记(深入)”;

实现一个切片迭代器

以字符串切片为例,创建一个具体的集合和对应的迭代器:

type StringSlice struct {
    items []string
}

type StringSliceIterator struct {
    slice *StringSlice
    index int
}

func (s *StringSlice) CreateIterator() Iterator {
    return &StringSliceIterator{
        slice: s,
        index: 0,
    }
}

func (it *StringSliceIterator) HasNext() bool {
    return it.index < len(it.slice.items)
}

func (it *StringSliceIterator) Next() interface{} {
    if it.HasNext() {
        value := it.Value()
        it.index++
        return value
    }
    return nil
}

func (it *StringSliceIterator) Value() interface{} {
    if it.index < len(it.slice.items) {
        return it.slice.items[it.index]
    }
    return nil
}
登录后复制

这里将集合(StringSlice)与迭代器分离,符合单一职责原则。调用 CreateIterator 返回一个可复用的迭代器实例。

小鸽子助手
小鸽子助手

一款集成于WPS/Word的智能写作插件

小鸽子助手 55
查看详情 小鸽子助手

使用示例

下面是如何使用这个迭代器遍历集合:

func main() {
    collection := &StringSlice{
        items: []string{"apple", "banana", "cherry"},
    }

    iter := collection.CreateIterator()
    for iter.HasNext() {
        fmt.Println("Item:", iter.Next())
    }
}
登录后复制

输出结果为:

Item: apple
Item: banana
cherry
登录后复制

扩展支持多种集合类型

你可以为其他数据结构实现相同的接口,比如 map、链表或树。只要它们实现了 CreateIterator 并返回 Iterator 接口,就能用同样的方式遍历。

例如,你有一个用户结构体列表,也可以写一个 UserSliceIterator,对外暴露一致的遍历方式,调用方无需关心底层是数组还是数据库查询结果。

基本上就这些。Go 的接口是非侵入式的,这让迭代器模式更容易落地。只需定义好行为,任何类型都可以按需实现,灵活又解耦。

以上就是如何用Golang实现迭代器模式遍历集合_Golang 迭代器模式使用示例的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号