vkorbes / aprendago

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

Exercício: Capítulo 24, Exercício 4 (Nível: 11) #76

Open vkorbes opened 3 years ago

vkorbes commented 3 years ago

Exercício: Capítulo 24, Exercício 4 (Nível: 11)

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!

an4kein commented 3 years ago

https://play.golang.org/p/21DbEstR0_q

package main

/* - Utilizando este código: https://play.golang.org/p/wlEM1tgfQD​
- ...use o struct sqrt.Error como valor do tipo erro. */

import (
    "fmt"
    "log"
)

type sqrtError struct {
    lat  string
    long string
    err  error
}

func (se sqrtError) Error() string {
    return fmt.Sprintf("math error: lat: %v | long: %v | valor: %v", se.lat, se.long, se.err)
}

func main() {
    test, err := sqrt(-10.23)
    if err != nil {
        log.Println(err)
    }
    fmt.Println(test)
}

func sqrt(f float64) (float64, error) {
    fmt.Println("esse eh o valor de f:", float64(f))
    if f < 0 {
        return 0, sqrtError{lat: "1337", long: "1338", err: fmt.Errorf("%v", f)}
    }
    return 42, nil
}

Output

eduardo@ubuntu:~/newCodes/04$ go run main.go 
esse eh o valor de f: -10.23
2021/03/24 14:44:53 math error: lat: 1337 | long: 1338 | valor: -10.23
0
UdsonWillams commented 2 months ago
package main

import (
    "errors"
    "fmt"
    "log"
)

type sqrtError struct {
    lat  string
    long string
    err  error
}

func (se sqrtError) Error() string {
    return fmt.Sprintf("math error: %v - %v - %v", se.lat, se.long, se.err)
}

func main() {
    _, err := sqrt(-10.23)
    if err != nil {
        log.Println(err)
    }
}

func sqrt(f float64) (float64, error) {
    if f < 0 {
        return f, sqrtError{
            lat:  "10",
            long: "21",
            err:  errors.New("Valor passado menor que 0"),
        }
    }
    return 42, nil
}