Golang1.8使用slice实现先进进出功能

来源:互联网 发布:windows窗口程序 编辑:程序博客网 时间:2024/05/16 15:39
package cacheimport (    "fmt")type lists struct {    count int    pop   int    last  int    index int    list  []int}func (l *lists) Add(i int) {    l.list[l.last] = i    l.last += 1    if l.last >= l.count {        l.last = l.index        if l.index >= l.count {            l.index = 0        }    }}func (l *lists) Pop() int {    if l.pop < l.index {        l.pop = l.index        return l.list[l.pop]    }    i := l.list[l.pop]    l.pop += 1    if l.pop >= 10 {        l.pop = 0    }    return i}func cmain() {    count := 10    l := lists{count: count, list: make([]int, count)}    for i := 1; i < 11; i++ {        l.Add(i)    }    fmt.Printf("%+v\n", l)    for i := 0; i < 5; i++ {        fmt.Println(l.Pop())    }    for i := 11; i < 21; i++ {        l.Add(i)    }    fmt.Printf("%+v\n", l)    for i := 0; i < 5; i++ {        fmt.Println(l.Pop())    }    for i := 21; i < 31; i++ {        l.Add(i)    }    fmt.Printf("%+v\n", l)    for i := 0; i < 10; i++ {        fmt.Println(l.Pop())    }}
1 0
原创粉丝点击