这是我的代码
type Queue interface {
Push(key interface{})
Pop() interface{}
Contains(key interface{}) bool
Len() int
Keys() []interface{}
}
type QueueData struct {
size int
data []interface{}
}
func New(size int) *QueueData {
return &QueueData{
size: size,
}
}
func (q *QueueData) IsEmpty() bool {
return len(q.data) == 0
}
// Peek : returns the next element in the queue
func (q *QueueData) Peek() (interface{}, error) {
if len(q.data) == 0 {
return 0, fmt.Errorf("Queue is empty")
}
return q.data[0], nil
}
// Queue : adds an element onto the queue and returns an pointer to the current queue
func (q *QueueData) Push(n interface{}) *QueueData {
if q.Len() < q.size {
q.data = append(q.data, n)
} else {
q.Pop()
q.Push(n)
}
return q
}
// Dequeue : removes the next element from the queue and returns its value
//func (q *QueueFix) Pop() (interface{}, error) {
func (q *QueueData) Pop() interface{} {
if len(q.data) == 0 {
//return 0, fmt.Errorf("Queue is empty")
return 0
}
element := q.data[0]
q.data = q.data[1:]
//return element, nil
return element
}
func (q *QueueData) Len() int {
return len(q.data)
}
func (q *QueueData) Keys() []interface{} {
return q.data
}
func (q *QueueData) Contains(key interface{}) bool {
cont := false
for i := 0; i < q.Len(); i++ {
if q.data[i] == key {
cont = true
}
}
return cont
}
我的测试看起来像这样......
var testValues = []interface{}{
"lorem",
"ipsum",
1,
2,
3,
"jack",
"jill",
"felix",
"donking",
}
测试返回
.\Queue_test.go:60:4: 错误调用可能有格式化指令 %v FAIL /C /Users/richa/go/src [构建失败]
我不明白如何从 _test.go 文件中制作代码。还需要解释如何制作 _test.go。只是给这个测试一些参考。就像我添加 EvictPolicy 函数时一样,它未声明...
MMTTMM
沧海一幻觉
随时随地看视频慕课网APP
相关分类