16.2.3 驱动程序
最后,这里是用于简单测试的主函数:
stack-demo/main.go
package main
import (
"fmt"
"gitlab.com/.../stack-demo/stack"
)
func main() {
lStack := stack.New[int]() // 由于在这种情况下,类型参数不能被推断出来(例如,没有初始值),所以需要明确指定。在这个例子中,我们正在创建一个int元素的堆栈。也就是说,lStack的类型是*ListStack[int]。
lStack.Push(1) // 现在我们只能将int类型的元素推送到这个堆栈中,所以不需要指定类型参数
lStack.Push(2)
lStack.Push(3)
fmt.Printf("Original Stack = %s\n", lStack) // 为了使打印函数有效工作,ListStack[E]或其指针类型需要实现fmt.Stringer接口。我们将把它作为一个练习
for { // 无限的for循环
if item, err := lStack.PopOrError(); err == nil { // if 语句。注意在布尔条件之前的简单语句
fmt.Printf("Popped Item = %v\n", item)
fmt.Printf("Current Stack = %s\n", lStack)
} else {
break // 中断语句。如果堆栈变空,我们就停止for循环
}
}
}
最后更新于