프로필사진


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"
}
반응형