How to calculate the area, diameter, and circumference of a circle in Go

2 Answers

0 votes
package main

import (
	"fmt"
	"math"
)

func main() {
	radius := 3.0
	PI := math.Pi

	area := PI * radius * radius
	fmt.Printf("Area = %.2f\n", area)

	diameter := 2 * radius
	fmt.Printf("Diameter = %.2f\n", diameter)

	circumference := 2 * PI * radius
	fmt.Printf("Circumference = %.2f\n", circumference)
}



/*
run:

Area = 28.27
Diameter = 6.00
Circumference = 18.85

*/

 



answered Aug 29, 2024 by avibootz
0 votes
package main

import (
	"errors"
	"fmt"
	"math"
)

// CircleMetrics holds the calculated geometric properties of a circle.
type CircleMetrics struct {
	Diameter      float64
	Circumference float64
	Area          float64
}

// CalculateCircleMetrics computes the diameter, circumference, and area of a circle.
// Returns an error if the provided radius is negative.
func CalculateCircleMetrics(radius float64) (CircleMetrics, error) {
	// Guard clause: radius cannot be negative
	if radius < 0 {
		return CircleMetrics{}, errors.New("radius cannot be negative")
	}

	diameter := 2.0 * radius
	circumference := 2.0 * math.Pi * radius
	
	// Standard multiplication (radius * radius) is more efficient than math.Pow(radius, 2)
	area := math.Pi * (radius * radius)

	return CircleMetrics{
		Diameter:      diameter,
		Circumference: circumference,
		Area:          area,
	}, nil
}

func main() {
	radius := 3.0

	// Call the function and handle the returned error idiomatically
	metrics, err := CalculateCircleMetrics(radius)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}

	// Output results formatted to 2 decimal places using Printf
	fmt.Printf("Radius: %.2f\n", radius)
	fmt.Printf("Diameter: %.2f\n", metrics.Diameter)
	fmt.Printf("Circumference: %.2f\n", metrics.Circumference)
	fmt.Printf("Area: %.2f\n", metrics.Area)
}


/*
run:

Radius: 3.00
Diameter: 6.00
Circumference: 18.85
Area: 28.27

*/

 



answered 3 hours ago by avibootz

Related questions

...