go - Go中的后进先出容器

标签 go

我需要使用 LIFO 堆栈容器进行推送和弹出操作,但 container 包中没有。它应该由每个程序员临时编写,还是有一种方法可以使用其他数据结构作为堆栈(如 Python 中的列表)?

最佳答案

Go 或标准库中没有内置堆栈类型。但是,您可以非常简单地将 Push 和 Pop 方法添加到 slice 中(与 Python 中现有的列表方法不同)。

type Stack []YourType

func (s *Stack) Push(v YourType) {
    *s = append(*s, v)
}

func (s *Stack) Pop() YourType {
    ret := (*s)[len(*s)-1]
    *s = (*s)[0 : len(*s)-1]

    return ret
}

非常简单

关于go - Go中的后进先出容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17435019/

相关文章:

go - GoLand 中的小 "a:"是什么意思?

go - 我可以得到一些帮助来推理 `concurrent prime sieve` 示例吗?

cgo 结果有 go 指针

postgresql - 使用 docker-compose 时如何从 golang 应用程序连接到 postgres?

xml - 解码嵌套在 XML 中的 HTML

go - 将字节数组的 golang 字符串格式转换回原始字节数组

go - 同时,如何管理值/状态并避免竞争条件

go - 将结构 slice 附加到另一个

go - go web app 中句柄函数的代码设计

go - 如何从打开的 TCPConn* 检索 IP 地址?