2021.01.09
Go 기초 :: 간단한 우선순위 없는 사칙 연산
반응형
이번에 Go를 공부하면서 조건문, 반복문, 함수, 문자열 처리, 입출력을 활용해서 간단한 우선순위 없는 사칙 연산을 구현해봤습니다.
소스 코드
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func sum(a int, b int) int {
return a + b
}
func minus(a int, b int) int {
return a - b
}
func multiplication(a int, b int) int {
return a * b
}
func division(a int, b int) int {
return a / b
}
func calc(a int, b int, cal string) int {
switch cal {
case "+":
return sum(a, b)
case "-":
return minus(a, b)
case "*":
return multiplication(a, b)
case "/":
return division(a, b)
}
panic("지원하지 않은 계산 식입니다.")
}
func strToCalc(str string) int {
world := strings.Split(str[:len(str)-2], " ")
result := 0
next := 0
op := ""
for _, item := range world {
if num, err := strconv.Atoi(item); err == nil {
if result == 0 {
result = num
} else {
next = num
}
if op != "" {
result = calc(result, next, op)
op = ""
}
} else {
op = item
}
}
return result
}
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter expression : ")
expression, _ := reader.ReadString('\n')
result := strToCalc(expression)
fmt.Printf("> %d", result)
}
코드 결과
tistory-view
{
"titleColor":"#1e1e1e"
}
반응형