aprendago icon indicating copy to clipboard operation
aprendago copied to clipboard

Exercício: Capítulo 13, Exercício 6 (Nível: 6)

Open vkorbes opened this issue 4 years ago • 9 comments

Exercício: Capítulo 13, Exercício 6 (Nível: 6)

Link para o vídeo:

Use esta thread para compartilhar sua solução, discutir o exercício com os colegas e pedir ajuda caso tenha dificuldades!

vkorbes avatar Sep 30 '20 17:09 vkorbes

https://play.golang.org/p/0Cg-9Xmjzp2

Oi, @ellenkorbes, nesse exercicio ficou faltando usar a interface criada. ^^ Seguindo o curso firme e forte. vlw pelo conteudo. 😄

dsmello avatar Oct 01 '20 23:10 dsmello

Deu um "leve" n[o na cabeça mais até que saiu kkkk

https://play.golang.org/p/7kVRUA21219

diegoparra avatar Oct 12 '20 16:10 diegoparra

https://play.golang.org/p/ZNiYAg75c1Y

F R I T E I M E U C E R E B R O lol - Vamos la assistir a resolucao do video :)

package main

/* - Crie um tipo "quadrado"
- Crie um tipo "círculo"
- Crie um método "área" para cada tipo que calcule e retorne a área da figura
    - Área do círculo: 2 * π * raio
    - Área do quadrado: lado * lado
- Crie um tipo "figura" que defina como interface qualquer tipo que tiver o método "área"
- Crie uma função "info" que receba um tipo "figura" e retorne a área da figura
- Crie um valor de tipo "quadrado"
- Crie um valor de tipo "círculo"
- Use a função "info" para demonstrar a área do "quadrado"
- Use a função "info" para demonstrar a área do "círculo"
*/

import (
	"fmt"
	"math"
)

type quadrado struct {
	lado float64
}

type circulo struct {
	raio float64
}

func (q quadrado) area() float64 {
	defer fmt.Print("A área do Quadrado: ")
	defer fmt.Println("Calculando area do Quadrado!!! \nValor inserido:", q.lado)
	return q.lado * q.lado
}

func (c circulo) area() float64 {
	res := math.Pow(c.raio, 2)
	defer fmt.Print("A área do círculo: ")
	defer fmt.Println("Calculando area do Circulo!!! \nValor inserido:", c.raio)
	return math.Pi * res
}

type figura interface {
	area() float64
}

func info(f figura) {
	fmt.Printf("%.2f\n", f.area())
}

func main() {
	meuquadrado := quadrado{
		lado: 4,
	}
	meucirculo := circulo{
		raio: 50,
	}
	info(meuquadrado)
	fmt.Println("")
	info(meucirculo)
}

Output

Calculando area do Quadrado!!! 
Valor inserido: 4
A área do Quadrado: 16.00

Calculando area do Circulo!!! 
Valor inserido: 50
A área do círculo: 7853.98

Program exited.

an4kein avatar Feb 25 '21 22:02 an4kein

Minha solução. Me parece mais lógico fazer assim:

  • tipo
  • metodo
  • tipo
  • metodo

package main

import (
	"fmt"
	"math"
)

type quadrado struct {
	lado float64
}

func (q quadrado) area() {
	fmt.Println(math.Pow(q.lado, 2))
}

type circulo struct {
	raio float64
}

func (c circulo) area() {
	fmt.Println((math.Pi * 2) * c.raio)
}

type figura interface {
	area()
}

func calculaArea(f figura) {
	f.area()
}


func main() {

	q1 := quadrado{
		lado: 35.0,
	}

	c1 := circulo{
		raio: 12.5,
	}

	// demonstração por metodos sem interface
	c1.area()
	q1.area()

	// demonstração por metodos com interface
	calculaArea(c1)
	calculaArea(q1)

}

alansantosmg avatar Apr 24 '21 17:04 alansantosmg

Cap. 13 – Exercícios: Nível #6 – 5 https://go.dev/play/p/pOGQ1YWWqEQ

image

wfrsilva avatar May 30 '22 03:05 wfrsilva

Compleatndo exercício

https://go.dev/play/p/zCwBsOwhifs

omesa1984 avatar Oct 19 '22 16:10 omesa1984

com retorno: https://go.dev/play/p/nwK3lAL92-K com print: https://go.dev/play/p/BdX7ySdeXrN

Harsgaard avatar Dec 15 '22 23:12 Harsgaard

Tentei fazer só com return, obg @Harsgaard pelo exemplo com retorno, tava bem perdido aqui kkkk

package main

import (
	"fmt"
	"math"
)

type quadrado struct {
	lado float64
}

type circulo struct {
	raio float64
}

func (q quadrado) area() float64 {
	return q.lado * q.lado
}

func (c circulo) area() float64 {
	return math.Pi * c.raio * c.raio
}

type figura interface {
	area() float64
}

func info(f figura) float64 {
	return f.area()
}

func main() {

	quadrado := quadrado{4.15}
	circulo := circulo{5.0}

	fmt.Println(info(quadrado))
	fmt.Println(info(circulo))
}

UdsonWillams avatar Apr 25 '24 16:04 UdsonWillams

package main

import (
	"fmt"
	"math"
)

type quadrado struct {
	lado float64
}

type circulo struct {
	raio float64
}

func (q quadrado) area() float64 {
	return q.lado * q.lado
}

func (c circulo) area() float64 {
	return math.Pi * c.raio * c.raio
}

type figura interface {
	area() float64
}

func info(f figura) float64 {
	return f.area()
}

func main() {
	quadrado := quadrado{4.15}
	circulo := circulo{5.0}

	// demonstração por metodos sem interface
	fmt.Println(quadrado.area())
	fmt.Println(circulo.area())

	// demonstração por metodos com interface

	fmt.Println(info(quadrado))
	fmt.Println(info(circulo))

}

thiagoCalazans-dev avatar May 19 '24 01:05 thiagoCalazans-dev