第一种 基于[]int

type Stack []int

// push
func (s *Stack) Push(a int) {
	*s = append(*s, a)
}

// pop
func (s *Stack) Pop() int {
	a := (*s)[len(*s)-1]
	*s = (*s)[:len(*s)-1]
	return a
}

// len
func (s *Stack) Len() int {
	return len(*s)
}

第二种 定义结构体

type Stack struct {
	slc []int
}

func (s *Stack) Push(a int) {
	s.slc = append(s.slc, a)
}

func (s *Stack) Pop() int {
	a := s.slc[len(s.slc)-1]
	s.slc = s.slc[:len(s.slc)-1]
	return a
}
func (s *Stack) Len() int {
	return len(s.slc)
}

基准测试

	// push
	for i := 0; i < 50; i++ {
		stack.Push(i)
	}

	// pop
	for i := 0; i < 25; i++ {
		stack.Pop()
	}

	// push & pop

	for i := 0; i < 25; i++ {
		stack.Push(i)
		stack.Pop()
	}
	stack.Len()

在这里插入图片描述
性能差距不大。
建议第二种实现。 方便扩展,而且可读性高一点。