aprendago
aprendago copied to clipboard
Exercício: Capítulo 13, Exercício 6 (Nível: 6)
Exercício: Capítulo 13, Exercício 6 (Nível: 6)
Use esta thread para compartilhar sua solução, discutir o exercício com os colegas e pedir ajuda caso tenha dificuldades!
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. 😄
Deu um "leve" n[o na cabeça mais até que saiu kkkk
https://play.golang.org/p/7kVRUA21219
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.
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)
}
Cap. 13 – Exercícios: Nível #6 – 5 https://go.dev/play/p/pOGQ1YWWqEQ
Compleatndo exercício
https://go.dev/play/p/zCwBsOwhifs
com retorno: https://go.dev/play/p/nwK3lAL92-K com print: https://go.dev/play/p/BdX7ySdeXrN
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))
}
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))
}