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 11, Exercício 1 (Nível: 5) #37

Open vkorbes opened 3 years ago

vkorbes commented 3 years ago

Exercício: Capítulo 11, Exercício 1 (Nível: 5)

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!

diegoparra commented 3 years ago

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

rwcosta commented 3 years ago

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

haystem commented 3 years ago

senti um pouco de dificuldade para imprimir, colei o print e tentei refazer de outra forma:

package main

import("fmt")

type pessoa struct{
  nome string
  sobrenome string
  sabores []string
}

func main(){
  pessoa1:= pessoa{
      nome:"Alberto",
      sobrenome:"Rocha",
      sabores : []string{"Baunilha", "Chocolate"},
  }

  pessoa2:= pessoa{
    nome:"Maria",
    sobrenome:"Rocha",
    sabores : []string{"Maracuja", "Morango"},
  }

  fmt.Println(pessoa1.nome)
  imprimirSabores(pessoa1.sabores)
  fmt.Println(pessoa2.nome) 
  imprimirSabores(pessoa2.sabores)

}

func imprimirSabores(condicao []string){
  for _,y:= range condicao{
  fmt.Println("\t",y)
  }
}
an4kein commented 3 years ago

https://play.golang.org/p/4DxW_4vu02u

estava procurando uma maneira de imprimir tudo de uma vez, sem precisar o for range duas vezes. Ou encontrar uma maneira de passar no range algo assim: range pessoa1.sabores , pessoa2.sabores {} e assim percorrer as duas de uma so vez.

package main

import (
    "fmt"
)

type pessoa struct {
    nome      string
    sobrenome string
    sabores   []string
}

func main() {
    pessoa1 := pessoa{
        nome:      "anakein",
        sobrenome: "ank",
        sabores:   []string{"morango", "coco", "chocolate", "limao"},
    }

    pessoa2 := pessoa{
        nome:      "edu",
        sobrenome: "bar",
        sabores:   []string{"pessego", "leite", "jaca"},
    }

    for _, sabor := range pessoa1.sabores {
        fmt.Println(sabor)
    }

    for _, sabor := range pessoa2.sabores {
        fmt.Println(sabor)
    }

}

Output

morango
coco
chocolate
limao
pessego
leite
jaca

Program exited.
an4kein commented 3 years ago

hahaha pesquisei e fiz mais alguns testes e consegui algo assim

sabores := append(pessoa1.sabores, pessoa2.sabores...)
    fmt.Printf("%T\t%v",sabores,sabores)

Output

[]string    [morango coco chocolate limao pessego leite jaca]
Program exited.

reference: https://stackoverflow.com/questions/18042439/go-append-to-slice-in-struct

vamos assistir o video da resolucao agora :)

an4kein commented 3 years ago

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

package main

import (
    "fmt"
)

type pessoa struct {
    nome, sobrenome string
    sabores         []string
}

func main() {
    pessoa1 := pessoa{nome: "anakein", sobrenome: "ank", sabores: []string{"morango", "coco", "chocolate", "limao"}}
    pessoa2 := pessoa{nome: "edu", sobrenome: "bar", sabores: []string{"pessego", "leite", "jaca"}}
    sabores := append(pessoa1.sabores, pessoa2.sabores...)
    for _, sabor := range sabores {
        fmt.Println(sabor)
    }
}

Output

morango
coco
chocolate
limao
pessego
leite
jaca

Program exited.
alansantosmg commented 3 years ago

Dessa vez minha solução ficou bem diferente das demais. Não usei funções, pois o desafio seria fazer sem elas. Mas por outro lado, ao invés de fazer impressões separadas, optei por colocar as pessoas dentro de um slice e fazer o for iterando nele. Deu certo, e ficou um pouco mais compacto.

package main

import "fmt"

type pessoa struct {
    Nome             string
    Sobrenome        string
    sorveteFavoritos []string
}

func main() {

    pessoa1 := pessoa{
        Nome:             "alan",
        Sobrenome:        "Santos",
        sorveteFavoritos: []string{"chocolate", "banana"},
    }

    pessoa2 := pessoa{
        Nome:             "Henrique",
        Sobrenome:        "Beltrão",
        sorveteFavoritos: []string{"limão", "pera"},
    }

    pessoas := []pessoa{pessoa1, pessoa2}

    for _, p := range pessoas {
        fmt.Println(p.Nome, p.Sobrenome)
        for _, s := range p.sorveteFavoritos {
            fmt.Printf(" -%v\n", s)
        }
    }
}

Output:

alan Santos -chocolate -banana Henrique Beltrão -limão -pera

andersoncleyson commented 2 years ago
package main

import "fmt"

type pessoa struct {
    nome      string
    sobrenome string
    sabores   []string
}

func main() {
    pessoa1 := pessoa{
        nome:      "Elliot",
        sobrenome: "Alderson",
        sabores: []string{
            "chocolate",
            "morango",
            "baunilha",
        },
    }

    pessoa2 := pessoa{
        nome:      "Darlene",
        sobrenome: "Alderson",
        sabores: []string{
            "açaí",
            "banana",
            "maracujá",
        },
    }

    fmt.Println(pessoa1.nome, pessoa1.sobrenome)
    for _, v := range pessoa1.sabores {
        fmt.Println("\t", v)
    }

    fmt.Println(pessoa2.nome, pessoa2.sobrenome)
    for _, v := range pessoa2.sabores {
        fmt.Println("\t", v)
    }
}
tomashugo commented 2 years ago
package main

import (
    "fmt"
)

type pessoa struct {
    nome      string
    sobrenome string
    sorvetes  []string
}

func main() {
    pessoa1 := pessoa{
        nome:      "Tomás",
        sobrenome: "Almeida",
        sorvetes:  []string{"coco", "tapioca"},
    }

    pessoa2 := pessoa{
        nome: "Evelyn",
        sobrenome: "Perdigão",
        sorvetes: []string{"belga","chocolate meio amargo"},
    }

    fmt.Printf("Nome: %v, Sobrenome: %v\n", pessoa1.nome, pessoa1.sobrenome)
    fmt.Println("Sorvetes favoritos:")

    for _, value := range pessoa1.sorvetes {
        fmt.Println("\t",value)
    }

    fmt.Printf("Nome: %v, Sobrenome: %v\n", pessoa2.nome, pessoa2.sobrenome)
    fmt.Println("Sorvetes favoritos:")

    for _, value := range pessoa2.sorvetes {
        fmt.Println("\t",value)
    }
}
viniciussanchez commented 2 years ago

https://go.dev/play/p/7adP0LUwOr5

AlissonAp commented 2 years ago

https://go.dev/play/p/xDPKZ3aP-DV

wfrsilva commented 2 years ago

Cap. 11 – Exercícios: Nível #5 – 1 https://go.dev/play/p/f5s4eyXT1N1

image

Harsgaard commented 1 year ago

Também senti uma necessidade de fazer algo diferente no print e então montei uma função pra exibir no formato mencionado: https://go.dev/play/p/dsVVLscHC3w

M3L1M commented 1 year ago

https://go.dev/play/p/Sav-EsFmvr5

adelsonsljunior commented 1 year ago
package main

import (
    "fmt"
)

type pessoa struct {
    nome      string
    sobrenome string
    sabores   []string
}

func main() {

    pessoa1 := pessoa{
        nome:      "Jorge",
        sobrenome: "Silva",
        sabores: []string{
            "morango", "manga", "jaca",
        },
    }

    pessoa2 := pessoa{
        nome:      "Maria",
        sobrenome: "Silva",
        sabores: []string{
            "chocolate", "flocos", "toffee",
        },
    }

    fmt.Println(pessoa1.nome, pessoa1.sobrenome)
    for _, sabor := range pessoa1.sabores {
        fmt.Println("\t", sabor)
    }

    fmt.Println("\n", pessoa2.nome, pessoa2.sobrenome)
    for _, sabor := range pessoa2.sabores {
        fmt.Println("\t", sabor)
    }

}
DominMFD commented 2 months ago

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

thiagoCalazans-dev commented 2 months ago

// You can edit this code!
// Click here and start typing.
package main

import "fmt"

func main() {
    type Pessoa struct {
        Nome      string
        Sobrenome string
        Sabores   []string
    }

    pessoa1 := Pessoa{
        Nome:      "pessoa1",
        Sobrenome: "sobrenome1",
        Sabores:   []string{"Creme", "Chocolate"},
    }

    pessoa2 := Pessoa{
        Nome:      "pessoa2",
        Sobrenome: "sobrenome2",
        Sabores:   []string{"Flocos", "Morango"},
    }

    for _, v := range pessoa1.Sabores {
        fmt.Println(v)
    }

    for _, v := range pessoa2.Sabores {
        fmt.Println(v)
    }

}