vkorbes / aprendago

Curso completo em português da linguagem Go, de zero a ninja! 🇧🇷
http://aprendago.com
1k stars 179 forks source link

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

Open vkorbes opened 3 years ago

vkorbes commented 3 years ago

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!

dsmello commented 3 years ago

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. 😄

diegoparra commented 3 years ago

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

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

an4kein commented 3 years ago

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.
alansantosmg commented 3 years ago

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


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)

}
wfrsilva commented 2 years ago

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

image

omesa1984 commented 1 year ago

Compleatndo exercício

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

Harsgaard commented 1 year ago

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

UdsonWillams commented 3 months ago

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))
}
thiagoCalazans-dev commented 2 months ago

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))

}