Example (Go) - Profit Calculator
module example.com/profit-calculator
go 1.21.6
package main
import (
"errors"
"fmt"
"os"
)
func main() {
// var revenue, expenses, taxRate float64
// fmt.Print("Revenue: ")
// fmt.Scan(&revenue)
//
// fmt.Print("Expenses: ")
// fmt.Scan(&expenses)
//
// fmt.Print("Tax Rate: ")
// fmt.Scan(&taxRate)
revenue, err := getUserInput("Revenue: ")
if err != nil {
fmt.Println("Error:", err)
panic("Revenue is not valid.")
}
expenses, err := getUserInput("Expenses: ")
if err != nil {
fmt.Println("error:", err)
panic("expenses is not valid.")
}
taxRate, err := getUserInput("Tax Rate: ")
if err != nil {
fmt.Println("Error:", err)
panic("Tax Rate is not valid.")
}
// var earnBeforeTax float64 = revenue - expenses
// var earnAfterTax float64 = earnBeforeTax * (1 - taxRate/100)
// var ratio float64 = earnBeforeTax / earnAfterTax
earnBeforeTax, earnAfterTax, ratio := calculateFinancials(revenue, expenses, taxRate)
// fmt.Println("EBT:", earnBeforeTax)
// fmt.Println("Profit:", earnAfterTax)
// fmt.Println("Ratio:", ratio)
fmt.Printf("EBT: %.1f\nProfit: %.1f\nRatio: %.1f\n", earnBeforeTax, earnAfterTax, ratio)
writeResultsToFile(earnBeforeTax, earnAfterTax, ratio)
}
func calculateFinancials(revenue, expenses, taxRate float64) (float64, float64, float64) {
var earnBeforeTax float64 = revenue - expenses
var earnAfterTax float64 = earnBeforeTax * (1 - taxRate/100)
var ratio float64 = earnBeforeTax / earnAfterTax
return earnBeforeTax, earnAfterTax, ratio
}
func getUserInput(infoText string) (float64, error) {
var userInput float64
fmt.Print(infoText)
fmt.Scan(&userInput)
if userInput <= 0 {
return 0, errors.New("Value cannot be less than or equal to zero (0).")
}
return userInput, nil
}
func writeResultsToFile(earnBeforeTax, earnAfterTax, ratio float64) {
var output string = fmt.Sprintf("EBT: %.2f\nProfit: %.2f\nRatio: %.2f\n",
earnBeforeTax,
earnAfterTax,
ratio)
os.WriteFile("results.txt", []byte(output), 0644)
}