container/ring 使用示例

复制代码
package main

import (
    "container/ring"
    "fmt"
)

var size int = 10

func main() {
    myRing := ring.New(size)
    fmt.Println("Empty ring:", *myRing)

    for i := 0; i < myRing.Len()-1; i++ {
        myRing.Value = i
        myRing = myRing.Next()
    }

    myRing.Value = 2

    sum := 0
    myRing.Do(func(x interface{}) {
        t := x.(int)
        sum = sum + t
    })
    fmt.Println("Sum:", sum)

    for i := 0; i < myRing.Len()+5; i++ {
        myRing = myRing.Next()
        fmt.Print(myRing.Value, " ")
    }
    fmt.Println()
}
复制代码

运行结果:

Empty ring: {0xc00010a020 0xc00010a120 <nil>}
Sum: 38
0 1 2 3 4 5 6 7 8 2 0 1 2 3 4 

 

本文作者:salami_china

本文链接:https://www.cnblogs.com/wangjq19920210/p/17608150.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   salami_china  阅读(22)  评论(0编辑  收藏  举报
历史上的今天:
2020-08-05 nova状态同步
2019-08-05 在KVM主机和虚拟机之间共享目录
2019-08-05 Ubuntu下载连接(阿里云镜像)
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起