golang 实现简单的栈

第一种 基于[]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()

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值