You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
437 B
Go
30 lines
437 B
Go
package genericmethods_test
|
|
|
|
type Stack[T any] []T
|
|
|
|
func (s *Stack[T]) Push(value T) {
|
|
*s = append(*s, value)
|
|
}
|
|
|
|
func (s Stack[T]) Peek() T {
|
|
return s[len(s)-1]
|
|
}
|
|
|
|
func (s Stack[T]) Len() int {
|
|
return len(s)
|
|
}
|
|
|
|
func (s *Stack[T]) Pop() (T, bool) {
|
|
items := *s
|
|
|
|
if len(items) == 0 {
|
|
var zero T
|
|
return zero, false
|
|
}
|
|
|
|
newStack, poppedValue := items[:len(items)-1], items[len(items)-1]
|
|
*s = newStack
|
|
|
|
return poppedValue, true
|
|
}
|