Skip to content

Commit

Permalink
Cap. 20 – Exercícios: Nível #9 – 2
Browse files Browse the repository at this point in the history
https://www.youtube.com/watch?v=iu632z7i3MM&list=PLCKpcjBB_VlBsxJ9IseNxFllf-UFEXOdg&index=140&ab_channel=AprendaGo

- Esse exercício vai reforçar seus conhecimentos sobre conjuntos de métodos.
    - Crie um tipo para um struct chamado "pessoa"
    - Crie um método "falar" para este tipo que tenha um receiver ponteiro (*pessoa)
    - Crie uma interface, "humanos", que seja implementada por tipos com o método "falar"
    - Crie uma função "dizerAlgumaCoisa" cujo parâmetro seja do tipo "humanos" e que chame o método "falar"
    - Demonstre no seu código:
        - Que você pode utilizar um valor do tipo "*pessoa" na função "dizerAlgumaCoisa"
        - Que você não pode utilizar um valor do tipo "pessoa" na função "dizerAlgumaCoisa"
- Se precisar de dicas, veja: https://gobyexample.com/interfaces
  • Loading branch information
wfrsilva committed Jun 13, 2022
1 parent 4ccd73f commit 57d9973
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions codigo/20_Exercicios_Nivel_9/9-2/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package main

import "fmt"

type pessoa struct {
nome string
melhorfrase string
}

func (p *pessoa) falar() {
fmt.Println("Oi, meu nome é", p.nome+"!\n", p.melhorfrase, "\n")
}

type humanos interface {
falar()
}

func dizerAlgumaCoisa(h humanos) {
h.falar()
}

func main() {

p1 := pessoa{"Michael Scott", "As pessoas dizem que eu sou o melhor chefe."}
p2 := pessoa{"Sheldon Cooper", "Eu não sou louco, minha mãe me testou!"}

p1.falar() // atalho para (&p1).falar
(&p1).falar() // "mais correto"
dizerAlgumaCoisa(&p1)

p2.falar()
(&p2).falar()
dizerAlgumaCoisa(&p2)

}

0 comments on commit 57d9973

Please sign in to comment.