Min and Max in Slice of Structures in Golang

Create new folder named entities. In entities folder, create new file named product.go as below:

package entities

type Product struct {
	Id       string
	Name     string
	Price    float64
	Quantity int
	Status   bool
}

Create new folder named src. In src folder, create new file named main.go as below:

package main

import (
	"entities"
	"fmt"
)

func main() {
	var products = []entities.Product{
		entities.Product{
			Id:       "p01",
			Name:     "name 1",
			Price:    5,
			Quantity: 9,
			Status:   false,
		},
		entities.Product{
			Id:       "p02",
			Name:     "name 2",
			Price:    2,
			Quantity: 8,
			Status:   true,
		},
		entities.Product{
			Id:       "p03",
			Name:     "name 3",
			Price:    11,
			Quantity: 7,
			Status:   false,
		},
	}

	min, max := FindMaxAndMin(products)

	fmt.Println("Product Min")
	Display(min)

	fmt.Println("Product Max")
	Display(max)
}

func FindMaxAndMin(products []entities.Product) (min entities.Product, max entities.Product) {
	min = products[0]
	max = products[0]
	for _, product := range products {
		if product.Price > max.Price {
			max = product
		}
		if product.Price < min.Price {
			min = product
		}
	}
	return min, max
}

func Display(product entities.Product) {
	fmt.Println("id: ", product.Id)
	fmt.Println("name: ", product.Name)
	fmt.Println("price: ", product.Price)
	fmt.Println("quantity: ", product.Quantity)
	fmt.Println("status: ", product.Status)
	fmt.Println("total: ", (product.Price * float64(product.Quantity)))
}




Open Terminal windows in Visual Studio Code and run command line: go run main.go

Product Min
id:  p02
name:  name 2
price:  2
quantity:  8
status:  true
total:  16

Product Max
id:  p03
name:  name 3
price:  11
quantity:  7
status:  false
total:  77