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. 逆波兰表达式求值