12345678910111213141516171819202122232425262728293031323334353637 |
- package main
-
- // STACK OMIT
- type Stack[T any] []T
-
- type Node[T any] struct {
- val T
- }
-
- // STACK OMIT
-
- // INTSTACK OMIT
- var stack Stack[int] // underlying type: []int
- var stack = Stack{1, 2, 3} // INVALID: cannot use generic type Stack[T any] without instantiation
- // INTSTACK OMIT
-
- // TYPE OMIT
- // make
- var stack = make(Stack[int])
- // new
- var stack = new(Stack[int])
- // 强制类型转换
- var stack = Stack[int]{1, 2, 3}
- var intStack []int = []int(stack)
-
- // TYPE OMIT
-
- // METHOD OMIT
- func (s *Stack[T]) Push(v T) { *s = append(*s, v) }
-
- func (s *Stack[T]) Pop() T {
- v := *s[len(*s)-1]
- *s = *s[:len(*s)-1]
- return v
- }
-
- // METHOD OMIT
|