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 2 (Nível: 11) #74

Open vkorbes opened 3 years ago

vkorbes commented 3 years ago

Exercício: Capítulo 24, Exercício 2 (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/Re5eQ3SBg9I

package main

/* - Utilizando este código: https://play.golang.org/p/9a1IAWy5E6​
- ...crie uma mensagem de erro customizada utilizando fmt.Errorf(). */

import (
    "encoding/json"
    "fmt"
    "log"
)

type person struct {
    First   string
    Last    string
    Sayings []string
}

func main() {
    p1 := person{
        First:   "James",
        Last:    "Bond",
        Sayings: []string{"Shaken, not stirred", "Any last wishes?", "Never say never"},
    }

    bs, err := toJSON(p1)
    if err != nil {
        log.Println(err)
    }
    fmt.Println(string(bs))
}

// toJSON needs to return an error also
func toJSON(a interface{}) ([]byte, error) {
    errpersonalizado := fmt.Errorf("erro personalizado")
    bs, errpersonalizado := json.Marshal(a)
    return bs, errpersonalizado
}

Output

{"First":"James","Last":"Bond","Sayings":["Shaken, not stirred","Any last wishes?","Never say never"]}

Program exited.
an4kein commented 3 years ago

Depois de assistir o video e ver como a Ellen fez, ficou assim

func toJSON(a interface{}) ([]byte, error) {
    //errpersonalizado := fmt.Errorf("erro personalizado")
    bs, err := json.Marshal(a)
    if err != nil {
        return []byte{}, fmt.Errorf("erros")
    }
    return bs, nil

Nao consegui entender o (return de bs, nil) nao poderia o retorno ser (return de bs, err)???