golang 150.逆波兰表达式求值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 150.逆波兰表达式求值相关的知识,希望对你有一定的参考价值。

func evalRPN(tokens []string) int {
    stack := &Stack{}
	for _, s := range tokens {
		if n, err := strconv.Atoi(s); err != nil {
			// 运算
			right, _ := stack.Pop()
			left, _ := stack.Pop()
			rightNum := right.(int)
			leftNum := left.(int)
			switch s {
			case "+":
				stack.Push(leftNum + rightNum)
			case "-":
				stack.Push(leftNum - rightNum)
			case "*":
				stack.Push(leftNum * rightNum)
			case "/":
				stack.Push(leftNum / rightNum)

			}
		} else {
			// 入栈
			stack.Push(n)
		}
	}
	res, _ := stack.Pop()
	return res.(int)
}
type Stack struct {
	data []interface{}
}
func (this *Stack) Len()int {
	return len(this.data)
}

func (this *Stack) Push(i interface{}) {
	this.data = append([]interface{}{i}, this.data...)
}
func (this *Stack) Peek() interface{} {
	return this.data[0]
}
func (this *Stack) Pop() (interface{}, bool) {
	if len(this.data) == 0 {
		return nil, false
	}
	i := this.Peek()
	this.data = this.data[1:]
	return i, true
}

golang 日志打印后程序直接退出

参考技术A 在一段 http get 的程序中,如果出现错误,打印日志后会导致程序退出。

将 log.Fatal 修改为 log.Println 即可解决问题。

感觉一个函数做了本不该它做的事情,有些好奇,golang 设计者的设计哲学。

以上是关于golang 150.逆波兰表达式求值的主要内容,如果未能解决你的问题,请参考以下文章

逆波兰表达式求值(leetcode 150)

LeetCode:逆波兰表达式求值150

150. 逆波兰表达式求值

150. 逆波兰表达式求值

LeetCode 150. 逆波兰表达式求值

[LeetCode] 150. 逆波兰表达式求值