golang-支持括号运算的计算器
现在需要实现一个计算器函数,输入是一个字符串格式的数学运算表达式,要求计算出该表达式的最终结果。表达式的操作符支持加减乘除和小括号。 思路:利用stack,将低优先级的运算压栈,遇到相同优先级的则计算第一个符号。右括号的,把括号内式子单独计算,并把结果代入原式子继续计算 package main import ( "errors" "fmt" "strconv" "log" ) type Stack struct { elements []interface{} //elements } func NewStack() *Stack { return &Stack{make([]interface{}, 0, 100)} } func (s *Stack) Push(value ...interface{}) { s.elements = append(s.elements, value...) } //返回下一个元素 func (s *Stack) Top() (value interface{}) { if s.Size() > 0 { return s.elements[s.Size()-1] } return nil //read empty s } //返回下一个元素,并从Stack移除元素 func (s *Stack) Pop() (value interface{}