Open vkorbes opened 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)
}
}
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.
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 :)
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.
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
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)
}
}
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)
}
}
Cap. 11 – Exercícios: Nível #5 – 1 https://go.dev/play/p/f5s4eyXT1N1
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
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)
}
}
// 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)
}
}
Exercício: Capítulo 11, Exercício 1 (Nível: 5)
Use esta thread para compartilhar sua solução, discutir o exercício com os colegas e pedir ajuda caso tenha dificuldades!