package main
import "fmt"
// Stack structure
type Stack struct {
items []int
}
// Push adds an item to the stack
func (s *Stack) Push(item int) {
s.items = append(s.items, item)
}
// Pop removes and returns the top item from the stack
func (s *Stack) Pop() int {
if len(s.items) == 0 {
fmt.Println("Stack is empty!")
return -1
}
top := s.items[len(s.items) - 1]
s.items = s.items[:len(s.items) - 1]
return top
}
func main() {
stack := Stack{}
// Push items onto the stack
stack.Push(10)
stack.Push(20)
stack.Push(30)
stack.Push(40)
fmt.Println("Stack after pushes:", stack.items)
// Pop items from the stack
fmt.Println("Popped:", stack.Pop())
fmt.Println("Popped:", stack.Pop())
fmt.Println("Stack after pops:", stack.items)
}
/*
run:
Stack after pushes: [10 20 30 40]
Popped: 40
Popped: 30
Stack after pops: [10 20]
*/