package main

import (
	"fmt"
	"math"
)

type Wheel struct {
	Circle
	Material string
	Color    string
	X        float64
}

func (w Wheel) Info() {
    fmt.Printf("Une roue est faite en %s de couleur %s\n", w.Material, w.Color)
}

type Circle struct {
	X      float64
	Y      float64
	Radius float64
}

type Shape interface {
	Area() float64
	Area2() float64
}

func (c *Circle) Area() float64 {
	return c.Radius * c.Radius * math.Pi
}

func (c Circle) Area2() float64 {
	return c.Radius * c.Radius * math.Pi
}

func Area(c Circle) float64 {
	return c.Radius * c.Radius * math.Pi
}

func ShapeArea(s Shape) float64 {
	return s.Area()
}

func main() {
	c1 := Circle{
		X:      15.0,
		Y:      12.0,
		Radius: 8.5,
	}

	c2 := Circle{15.0, 12, 8.5}

	fmt.Println(c1 == c2)

	fmt.Println(c1.Area() == c1.Area2())

	w1 := Wheel{
		Circle: Circle{
			Radius: 10.0,
			X:      15.0,
		},
		Material: "Caoutchouc",
		Color:    "Noire",
		X:        5.0,
	}
	w1.Info()

	fmt.Println(w1.Area())
	fmt.Println(w1.X)
	fmt.Println(w1.Circle.X)
}

