No Description

generic_stack.go 642B

12345678910111213141516171819202122232425262728293031323334353637
  1. package main
  2. // STACK OMIT
  3. type Stack[T any] []T
  4. type Node[T any] struct {
  5. val T
  6. }
  7. // STACK OMIT
  8. // INTSTACK OMIT
  9. var stack Stack[int] // underlying type: []int
  10. var stack = Stack{1, 2, 3} // INVALID: cannot use generic type Stack[T any] without instantiation
  11. // INTSTACK OMIT
  12. // TYPE OMIT
  13. // make
  14. var stack = make(Stack[int])
  15. // new
  16. var stack = new(Stack[int])
  17. // 强制类型转换
  18. var stack = Stack[int]{1, 2, 3}
  19. var intStack []int = []int(stack)
  20. // TYPE OMIT
  21. // METHOD OMIT
  22. func (s *Stack[T]) Push(v T) { *s = append(*s, v) }
  23. func (s *Stack[T]) Pop() T {
  24. v := *s[len(*s)-1]
  25. *s = *s[:len(*s)-1]
  26. return v
  27. }
  28. // METHOD OMIT