Go 后进先出集装箱

Go 后进先出集装箱,go,Go,我需要使用具有推送和弹出操作的后进先出堆栈容器,但是容器包没有。它应该是由每个程序员临时编写的,还是有一种方法可以使用其他数据结构作为堆栈(如python中的list)?stdlib中没有容器包。然而,后进先出只是一个堆栈,它很容易建模,例如,一个切片。因此没有stdlib LIFO容器。Go或标准库中没有内置堆栈类型。但是,您可以非常简单地将Push和Pop方法添加到切片中(与python中列表上的现有方法不同) 非常简单堆栈是列表的子集,golang有容器/列表库,这对于实现堆栈很简单,下面

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

stdlib中没有
容器
包。然而,后进先出只是一个堆栈,它很容易建模,例如,一个切片。因此没有stdlib LIFO容器。

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


非常简单

堆栈是列表的子集,golang有容器/列表库,这对于实现堆栈很简单,下面是一个示例

//last in first out
    stack := list.New()
    //stack push use PushBack
    for i:=0;i<100;i++ {
        stack.PushBack(i)
    }
    //stack get top use stack.Back()
    //stack pop use stack.Remove(stack.Back())
    //stack isEmpty use stack.Back() == nil 
    for stack.Back()!=nil {
        fmt.Println(stack.Back().Value)
        stack.Remove(stack.Back())
    }

//后进先出
堆栈:=list.New()
//堆栈推送使用推送

对于i:=0;我只是给出了部分答案。@nemo我觉得除了对切片/指针语义的过度解释之外,没有更多的话要说。嗯,我本以为你必须自己实现它。例如:…
。仅仅发布代码就意味着根本没有读过问题,只是到处乱扔代码。但也许这只是我的回答,你的代码不好,因为append很慢,在pop之后不会释放堆内存,使用container/list更好相关:@Lazin:那不是一个包。
//last in first out
    stack := list.New()
    //stack push use PushBack
    for i:=0;i<100;i++ {
        stack.PushBack(i)
    }
    //stack get top use stack.Back()
    //stack pop use stack.Remove(stack.Back())
    //stack isEmpty use stack.Back() == nil 
    for stack.Back()!=nil {
        fmt.Println(stack.Back().Value)
        stack.Remove(stack.Back())
    }