Answers for "golang stack"

1

golang stack

package main

import (
	"fmt"
)

type Stack[T any] struct {
	list []T
}

func (stack *Stack[T]) Peek() T {
	if stack.Empty() {
		panic("Stack is empty")
	}
	return stack.list[len(stack.list)-1]
}

func NewStack[T any]() Stack[T] {
	return Stack[T]{}
}

func (stack *Stack[T]) Push(elm T) {
	stack.list = append(stack.list, elm)
}

func (stack *Stack[T]) Pop() (elm T) {
	elm, stack.list = stack.Peek(), stack.list[0:len(stack.list)-1]
	return elm
}

func (stack *Stack[T]) Empty() bool {
	return len(stack.list) == 0
}

func main() {
	stack := NewStack[int]()
	stack.Push(10)
	stack.Pop()
	stack.Push(7)
	stack.Push(3)
	fmt.Println(stack.Peek())
}
Posted by: Guest on April-26-2022

Browse Popular Code Answers by Language