go泛型特性实现一个简易队列

package main

import "fmt"

type QueueInterface[T any] interface {
    Put(value T)
    Pop() (T, bool)
    Size() int
}

type Queue[T any] struct {
    elements []T
}

// Put 将数据放入队列尾部
func (q *Queue[T]) Put(value T) {
    q.elements = append(q.elements, value)
}

// Pop 从队列头部取出并从头部删除对应数据
func (q *Queue[T]) Pop() (T, bool) {
    var value T
    if len(q.elements) == 0 {
        return value, true
    }
    value = q.elements[0]
    q.elements = q.elements[1:]
    return value, len(q.elements) == 0
}

// Size 队列大小
func (q *Queue[T]) Size() int {
    return len(q.elements)
}

func main() {
    var qInterface QueueInterface[int]
    qInterface = new(Queue[int])
    qInterface.Put(1)
    qInterface.Put(2)
    qInterface.Put(3)
    fmt.Println(qInterface)
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
goStruct
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!