1
0
Fork 0

comments for inventory

main
Sebastian Steger 2025-12-22 10:40:08 +00:00
parent 0e296146ec
commit 362bf8202b
1 changed files with 14 additions and 8 deletions

View File

@ -2,14 +2,17 @@ package main
import "fmt" import "fmt"
// a new type named Category that can hold integer values
type Category int type Category int
// The go equivalent of an enum that enumerates different named Categories
const ( const (
Electronics Category = iota Electronics Category = iota //0
Groceries Groceries //1
Clothes Clothes //2
) )
// implementation of the fmt.Stringer interface. In that way, Categories can be printed using the fmt.Print* functions
func (c Category) String() string { func (c Category) String() string {
switch c { switch c {
case Electronics: case Electronics:
@ -32,7 +35,8 @@ type Product struct {
} }
// Add a new product to the inventory // Add a new product to the inventory
func addProduct(inventory *[]Product, name string, price float64, quantity int, category Category) { func addProduct(inventory *[]Product, //pointer to the slice of of Products that shall be modified. In that way it can serve as in input/output parameter
name string, price float64, quantity int, category Category) {
// Check if the product already exists in the inventory // Check if the product already exists in the inventory
for _, product := range *inventory { for _, product := range *inventory {
if product.Name == name { if product.Name == name {
@ -51,7 +55,8 @@ func addProduct(inventory *[]Product, name string, price float64, quantity int,
} }
// Remove a product from the inventory // Remove a product from the inventory
func removeProduct(inventory *[]Product, name string) { func removeProduct(inventory *[]Product, //pointer to the slice of of Products that shall be modified. In that way it can serve as in input/output parameter
name string) {
for i, product := range *inventory { for i, product := range *inventory {
if product.Name == name { if product.Name == name {
*inventory = append((*inventory)[:i], (*inventory)[i+1:]...) *inventory = append((*inventory)[:i], (*inventory)[i+1:]...)
@ -62,8 +67,9 @@ func removeProduct(inventory *[]Product, name string) {
fmt.Println("Product not found.") fmt.Println("Product not found.")
} }
// Update the quantity of a product // Update the quantity of a product.
func updateQuantity(inventory *[]Product, name string, newQuantity int) { func updateQuantity(inventory *[]Product, //pointer to the slice of of Products that shall be modified. In that way it can serve as in input/output parameter
name string, newQuantity int) {
for i, product := range *inventory { for i, product := range *inventory {
if product.Name == name { if product.Name == name {
(*inventory)[i].Quantity = newQuantity (*inventory)[i].Quantity = newQuantity
@ -77,7 +83,7 @@ func updateQuantity(inventory *[]Product, name string, newQuantity int) {
// Display the inventory // Display the inventory
func displayInventory(inventory []Product) { func displayInventory(inventory []Product) {
fmt.Println("Inventory:") fmt.Println("Inventory:")
for _, product := range inventory { for _, product := range inventory { //iterating over a range returns pairs of index and the content of a container (here: inventory). Since we don't care about the index, we use _ as a placeholder.
fmt.Printf("%s - %s (Price: $%.2f, Quantity: %d)\n", fmt.Printf("%s - %s (Price: $%.2f, Quantity: %d)\n",
product.Name, product.Category, product.Price, product.Quantity) product.Name, product.Category, product.Price, product.Quantity)
} }