github.com/alexandrestein/gods@v1.0.1/stacks/stacks.go (about)

     1  // Copyright (c) 2015, Emir Pasic. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // Package stacks provides an abstract Stack interface.
     6  //
     7  // In computer science, a stack is an abstract data type that serves as a collection of elements, with two principal operations: push, which adds an element to the collection, and pop, which removes the most recently added element that was not yet removed. The order in which elements come off a stack gives rise to its alternative name, LIFO (for last in, first out). Additionally, a peek operation may give access to the top without modifying the stack.
     8  //
     9  // Reference: https://en.wikipedia.org/wiki/Stack_%28abstract_data_type%29
    10  package stacks
    11  
    12  import "github.com/alexandrestein/gods/containers"
    13  
    14  // Stack interface that all stacks implement
    15  type Stack interface {
    16  	Push(value interface{})
    17  	Pop() (value interface{}, ok bool)
    18  	Peek() (value interface{}, ok bool)
    19  
    20  	containers.Container
    21  	// Empty() bool
    22  	// Size() int
    23  	// Clear()
    24  	// Values() []interface{}
    25  }