Skip to content
This is my space, where experience meets the will to start over. This is my space, where experience meets the will to start over.

The first step is knowing where you want to go.

  • Home
  • Coding Hub
    • Software & Project
      • Small Biz Ops – S.B.O.
        • SmallBizOps – Day 10/90
      • CRM/ERP
      • MyTracker
      • My Budget
    • Form Zero to “WoW”
      • JavaScript from Zero (Completed)
        • 2. Remove and Edit List Items
        • 3. Separate HTML and JavaScript, Use addEventListener and Conditional Logic
        • 4. Add Dynamic CSS Classes
        • 5. Save & Restore Your List with localStorage
        • 6 – Turn Your App into a Full To-Do List
      • Python from Zero (Completed)
        • 2. Lists & Loops
        • 3. Conditional Menus
        • 4. Edit & Remove Tasks (with closing: Python vs PHP and Large Data)
        • 5 – Save to File: Make Your Tasks Survive Restarts
        • 6 — Pythin from zero – Final Project Polishing: Numbering, Formatting, and Preparing for CSV
      • Rust – From Zero to “WoW” (Completed)
        • 1 – Setup and Project Structure in Rust
        • 2 – User input: validation and error handling
        • 3 – Rust from Zero to “WoW – BMI Calculation and Conditional Logic
        • 4 –Rust – Clear, Formatted Output
        • 5 – Rust – Final Thoughts: Precision as a Form of Respect
      • Go from Zero to “WoW” (Completed)
        • 1 – Why Go Is Perfect for a Personal Expense Tracker
        • 2 – Logging Expenses and Console Input
        • 3 – Go from Zero to “WoW” – Smart Filtering & Display Logic
        • 4 – Go – Saving Data to Local Files
        • 5 – Go – Final Project – Expense Tracker in Go
      • C++ from Zero to “WoW” (Completed)
        • 1 – Why C++ for file organization?
        • 2 – C++ – File Type Detection and Classification
        • 3 – C++ – Creating & Managing Subfolders
        • 4 – C++ – Safe File Movement and User Feedback
        • 5 – C++ – Order as Mental Clarity
      • Ubuntu – From Zero to “WoW” (Completed)
        • 2 – Ubuntu – The Desktop Environment and Essential Commands
        • 3 – Ubuntu – Managing Files, Folders, and Permissions
        • 4 – Ubuntu – Installing and Updating Software with APT and Snap
        • 5 – Ubuntu – Customizing the Desktop Environment
        • 6 – Ubuntu – Network and Device Configuration
        • 7 – Ubuntu – User Management & System Security — “The Cathedral of Permissions”
        • 8 – Ubuntu – The Talking Machine: Terminal & Bash Scripting
        • 9 – Ubuntu – Ubuntu as a Server or Development Environment
        • 10 – Ubuntu – Backup, Maintenance & Troubleshooting
    • Git Hub Repository
      • Small Biz Ops – S.B.O.
      • Mini ERP – PHP & MySQL
      • CleverCRM (Java, Spring Boot)
      • FraudWatch (Python, FastAPI + scikit-learn)
      • OnboardIQ – Smart Onboarding Portal (Flask + SQLite Demo)
    • ArchPilot
      • 1-Users & Roles, End-to-End (Architecture, Database, and Cross-Framework Code)
      • 2 – Client Registry (CRM) Across Frameworks
      • 3 – Project & Budget Tracker (ERP)
      • 4 – Approval Workflow Engine Multi-step routing, status tracking, escalation paths
      • 5 – Audit Trail & Versioning
    • Small Biz Ops – S.B.O.
  • Vivere in USA
  • P4Y
  • Testi poetici
    • 1 – Sospeso
    • 2 – Il bicchiere di vetro quieto
    • 3 – Quando l’amore inciampa
    • 4 – Ma chi siete davvero?
    • 5 – Above the Thread of Day
    • 6 – The Truth That Doesn’t Exist
    • 7 – All of You, I Miss
    • 8 – The Captain and the Ocean
    • 9 – Between Light and Mist
    • 10 – Il peso delle scelte
  • Contact
  • Admin
This is my space, where experience meets the will to start over.
This is my space, where experience meets the will to start over.

The first step is knowing where you want to go.

Coding – Step 12.2 – Go from Zero to “WoW” – Logging Expenses and Console Input

Posted on 27 Settembre 202527 Settembre 2025 By Francesco

Now that our project is set up, it’s time to make it useful: let’s log our first expenses. An expense tracker without input is just a blank page — we want a tool that listens to us, records our daily spending, and gives us control.

Go makes this simple. Even as beginners, we can build something that feels practical and “real” with just a few lines of code.


Step 1: Reading Input from the Console

In Go, we can use the bufio package to read what the user types. Here’s the simplest example:

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    reader := bufio.NewReader(os.Stdin)

    fmt.Print("Enter a description: ")
    text, _ := reader.ReadString('\n')

    fmt.Println("You wrote:", text)
}

What’s happening here?

  • bufio.NewReader(os.Stdin) creates a reader connected to the keyboard.
  • ReadString('\n') waits until you press Enter and then gives you the text.
  • fmt.Print and fmt.Println display messages in the terminal.

Run the program, type something, and see it echo back to you. That’s your first conversation with the program.


Step 2: Asking for an Expense

Let’s extend the program so the user can enter both a description and an amount:

package main

import (
    "bufio"
    "fmt"
    "os"
    "strconv"
    "strings"
)

func main() {
    reader := bufio.NewReader(os.Stdin)

    fmt.Print("Enter expense description: ")
    description, _ := reader.ReadString('\n')
    description = strings.TrimSpace(description)

    fmt.Print("Enter amount (in euros): ")
    amountStr, _ := reader.ReadString('\n')
    amountStr = strings.TrimSpace(amountStr)

    amount, err := strconv.ParseFloat(amountStr, 64)
    if err != nil {
        fmt.Println("Error: please enter a valid number.")
        return
    }

    fmt.Println("Expense recorded:", description, "-", amount, "€")
}

Here’s what’s new:

  • strings.TrimSpace() removes spaces and newlines.
  • strconv.ParseFloat() converts text into a number (e.g., 10.50).
  • If the user types something wrong, the program shows an error instead of crashing.

Step 3: Motivation for Beginners

Why is this exciting?

  • Because you’ve just built a real tool — type an expense, and it responds.
  • With a few more steps, this tool will save your data and help you track spending.
  • Unlike bloated apps, this is yours: lightweight, private, and under your control.

Every line of Go you write here is an investment: you’re not just learning syntax, you’re building something that grows with you.


At this point, you can run the program, enter a few test expenses, and see them printed back. In the next chapter, we’ll make the tracker even more powerful by saving your expenses into a local JSON file, so they don’t disappear when you close the program.

Post Views: 247

Condividi:

  • Condividi su Facebook (Si apre in una nuova finestra) Facebook
  • Condividi su X (Si apre in una nuova finestra) X
Go Coding beginnersconsole appsexpense trackerGogolangProgrammingUser Input

Navigazione articoli

Previous post
Next post

Francesco

My name is Francesco Boschi, originally from Italy and currently based in the United States. For over twenty years, I’ve worked as a manager and consultant across diverse sectors — from education and cultural institutions to the food industry — developing skills in operational management, strategic consulting, and complex problem-solving. In recent years, I’ve combined this experience with a strong passion for software development, creating custom tools designed to simplify workflows and meet real business needs.

Relocating to the U.S. marks the beginning of a new chapter: a personal and professional decision driven by the desire to be close to my son and to embrace new challenges in a different environment. Today, my goal is to turn my experience into meaningful solutions, blending strategic vision with technical expertise to help people and organizations work more effectively.

I enjoy moving between different worlds, adapting tools and approaches to people and contexts. I bring leadership, flexibility, attention to detail, analytical thinking, and a strong problem-solving mindset — along with a deep curiosity to learn and grow. Above all, I believe in sharing: I’m always eager to offer my experience to support the growth of others.

Related Posts

Go

Coding – Step 12.3 – Go from Zero to “WoW” – Smart Filtering & Display Logic

Posted on 7 Ottobre 20257 Ottobre 2025

Build a tiny but powerful Go CLI that loads items, filters them with composable predicates, and prints a clean table. You’ll learn how to model data, write reusable filter functions, chain conditions, sort and paginate results, and test everything with Go’s testing tools.

Condividi:

  • Condividi su Facebook (Si apre in una nuova finestra) Facebook
  • Condividi su X (Si apre in una nuova finestra) X
Read More
Coding

Coding – Step 11.3 – Rust from Zero to “WoW – BMI Calculation and Conditional Logic

Posted on 7 Ottobre 20257 Ottobre 2025

Learn how to calculate and interpret the Body Mass Index (BMI) using Rust. In this lesson, you’ll master input validation, conditional logic (if/else, match), and error handling with Result, while building a practical CLI program step by step.

Condividi:

  • Condividi su Facebook (Si apre in una nuova finestra) Facebook
  • Condividi su X (Si apre in una nuova finestra) X
Read More
Coding

Coding – Step 13.1 – C++ from Zero to “WoW” – Why C++ for file organization?

Posted on 21 Settembre 202521 Settembre 2025

A console-based C++ project that scans and organizes files into subfolders by type. Built for speed, clarity, and educational value — no commercial intent.

Condividi:

  • Condividi su Facebook (Si apre in una nuova finestra) Facebook
  • Condividi su X (Si apre in una nuova finestra) X
Read More

Iscriviti alla nostra Newsletter

🤞 Let's keep in touch

We do not send spam! Read our Privacy policy for more information.

Controlla la tua casella di posta o la cartella spam per confermare la tua iscrizione

Cerca nel sito

©2026 This is my space, where experience meets the will to start over. | WordPress Theme by SuperbThemes