Skip to content

Commit

Permalink
Merge pull request #77 from larien/traducao/estruturas-metodos-e-inte…
Browse files Browse the repository at this point in the history
…rfaces

Traducao/estruturas metodos e interfaces
  • Loading branch information
larien committed Dec 25, 2019
2 parents 9ebe2e8 + e4ea005 commit 308ce05
Show file tree
Hide file tree
Showing 38 changed files with 1,041 additions and 1,058 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
3. [Inteiros](primeiros-passos-com-go/inteiros.md) - Mais conteúdo sobre sintaxe de declaração de função e aprenda novas formas de melhorar a documentação do seu código.
4. [Iteração](primeiros-passos-com-go/iteracao.md) - Aprenda sobre `for` e benchmarking.
5. [Arrays e slices](primeiros-passos-com-go/arrays-e-slices.md) - Aprenda sobre arrays, slices, `len`, variáveis recebidas como argumentos, `range` e cobertura de testes.
6. [Estruturas, métodos e interfaces](primeiros-passos-com-go/structs-methods-and-interfaces.md) - Aprenda sobre `structs`, métodos, `interface` e testes orientados a tabela \(table driven tests\).
6. [Estruturas, métodos e interfaces](primeiros-passos-com-go/estruturas-metodos-e-interfaces.md) - Aprenda sobre `structs`, métodos, `interface` e testes orientados a tabela \(table driven tests\).
7. [Ponteiros e erros](primeiros-passos-com-go/ponteiros-e-erros.md) - Aprenda sobre ponteiros e erros.
8. [Maps](primeiros-passos-com-go/maps.md) - Aprenda sobre armazenamento de valores na estrutura de dados `map`.
9. [Injeção de dependência](primeiros-passos-com-go/injecao-de-dependencia.md) - Aprenda sobre injeção de dependência, qual sua relação com interfaces e uma introdução a I/O.
Expand Down
2 changes: 1 addition & 1 deletion SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
- [Inteiros](primeiros-passos-com-go/inteiros.md)
- [Iteração](primeiros-passos-com-go/iteracao.md)
- [Arrays e slices](primeiros-passos-com-go/arrays-e-slices.md)
- [Structs, métodos e interfaces](primeiros-passos-com-go/structs-methods-and-interfaces.md)
- [Estruturas, métodos e interfaces](primeiros-passos-com-go/estruturas-metodos-e-interfaces.md)
- [Ponteiros e erros](primeiros-passos-com-go/ponteiros-e-erros.md)
- [Maps](primeiros-passos-com-go/maps.md)
- [Injeção de dependência](primeiros-passos-com-go/dependency-injection.md)
Expand Down
4 changes: 2 additions & 2 deletions build.books.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ docker run -v `pwd`:/source jagregory/pandoc -o aprenda-go-com-testes.pdf --late
primeiros-passos-com-go/inteiros.md \
primeiros-passos-com-go/iteracao.md \
primeiros-passos-com-go/arrays-e-slices.md \
primeiros-passos-com-go/structs-methods-and-interfaces.md \
primeiros-passos-com-go/estruturas-metodos-e-interfaces.md \
primeiros-passos-com-go/ponteiros-e-erros.md \
primeiros-passos-com-go/maps.md \
primeiros-passos-com-go/injecao-de-dependencia.md \
Expand Down Expand Up @@ -38,7 +38,7 @@ docker run -v `pwd`:/source jagregory/pandoc -o aprenda-go-com-testes.epub --lat
primeiros-passos-com-go/inteiros.md \
primeiros-passos-com-go/iteracao.md \
primeiros-passos-com-go/arrays-e-slices.md \
primeiros-passos-com-go/structs-methods-and-interfaces.md \
primeiros-passos-com-go/estruturas-metodos-e-interfaces.md \
primeiros-passos-com-go/ponteiros-e-erros.md \
primeiros-passos-com-go/maps.md \
primeiros-passos-com-go/injecao-de-dependencia.md \
Expand Down
6 changes: 6 additions & 0 deletions estruturas-metodos-e-interfaces/v1/formas.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package main

// Perimetro retorna o perímetro de um retângulo
func Perimetro(largura float64, altura float64) float64 {
return 2 * (largura + altura)
}
12 changes: 12 additions & 0 deletions estruturas-metodos-e-interfaces/v1/formas_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package main

import "testing"

func TestPerimetro(t *testing.T) {
resultado := Perimetro(10.0, 10.0)
esperado := 40.0

if resultado != esperado {
t.Errorf("resultado %.2f, esperado %.2f", resultado, esperado)
}
}
11 changes: 11 additions & 0 deletions estruturas-metodos-e-interfaces/v2/formas.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package main

// Perimetro retorna o perímetro de um retângulo
func Perimetro(largura float64, altura float64) float64 {
return 2 * (largura + altura)
}

// Area retorna a área de um retângulo
func Area(largura float64, altura float64) float64 {
return largura * altura
}
21 changes: 21 additions & 0 deletions estruturas-metodos-e-interfaces/v2/formas_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package main

import "testing"

func TestPerimetro(t *testing.T) {
resultado := Perimetro(10.0, 10.0)
esperado := 40.0

if resultado != esperado {
t.Errorf("resultado %.2f, esperado %.2f", resultado, esperado)
}
}

func TestArea(t *testing.T) {
resultado := Area(12.0, 6.0)
esperado := 72.0

if resultado != esperado {
t.Errorf("resultado %.2f, esperado %.2f", resultado, esperado)
}
}
17 changes: 17 additions & 0 deletions estruturas-metodos-e-interfaces/v3/formas.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package main

// Retangulo tem as dimensões de um retângulo
type Retangulo struct {
Largura float64
Altura float64
}

// Perimetro retorna o perímetro de um retângulo
func Perimetro(retangulo Retangulo) float64 {
return 2 * (retangulo.Largura + retangulo.Altura)
}

// Area retorna a área de um retângulo
func Area(retangulo Retangulo) float64 {
return retangulo.Largura * retangulo.Altura
}
23 changes: 23 additions & 0 deletions estruturas-metodos-e-interfaces/v3/formas_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package main

import "testing"

func TestPerimetro(t *testing.T) {
retangulo := Retangulo{10.0, 10.0}
resultado := Perimetro(retangulo)
esperado := 40.0

if resultado != esperado {
t.Errorf("resultado %.2f, esperado %.2f", resultado, esperado)
}
}

func TestArea(t *testing.T) {
retangulo := Retangulo{12.0, 6.0}
resultado := Area(retangulo)
esperado := 72.0

if resultado != esperado {
t.Errorf("resultado %.2f, esperado %.2f", resultado, esperado)
}
}
29 changes: 29 additions & 0 deletions estruturas-metodos-e-interfaces/v4/formas.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package main

import "math"

// Retangulo tem as dimensões de um retângulo
type Retangulo struct {
Largura float64
Altura float64
}

// Area retorna a área de um retângulo
func (r Retangulo) Area() float64 {
return r.Largura * r.Altura
}

// Perimetro retorna o perímetro de um retângulo
func Perimetro(retangulo Retangulo) float64 {
return 2 * (retangulo.Largura + retangulo.Altura)
}

// Circulo representa um círculo.
type Circulo struct {
Raio float64
}

// Area retorna a área de um círculo
func (c Circulo) Area() float64 {
return math.Pi * c.Raio * c.Raio
}
37 changes: 37 additions & 0 deletions estruturas-metodos-e-interfaces/v4/formas_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package main

import (
"testing"
)

func TestPerimetro(t *testing.T) {
retangulo := Retangulo{10.0, 10.0}
resultado := Perimetro(retangulo)
esperado := 40.0

if resultado != esperado {
t.Errorf("resultado %.2f, esperado %.2f", resultado, esperado)
}
}

func TestArea(t *testing.T) {
t.Run("retângulos", func(t *testing.T) {
retangulo := Retangulo{12.0, 6.0}
resultado := retangulo.Area()
esperado := 72.0

if resultado != esperado {
t.Errorf("resultado %.2f, esperado %.2f", resultado, esperado)
}
})

t.Run("círculos", func(t *testing.T) {
circulo := Circulo{10}
resultado := circulo.Area()
esperado := 314.1592653589793

if resultado != esperado {
t.Errorf("resultado %.2f, esperado %.2f", resultado, esperado)
}
})
}
34 changes: 34 additions & 0 deletions estruturas-metodos-e-interfaces/v5/formas.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package main

import "math"

// Forma é implementado por qualquer coisa que possa dizer qual é sua área
type Forma interface {
Area() float64
}

// Retangulo tem as dimensões de um retângulo
type Retangulo struct {
Largura float64
Altura float64
}

// Area retorna a área de um retângulo
func (r Retangulo) Area() float64 {
return r.Largura * r.Altura
}

// Perimetro retorna o perímetro de um retângulo
func Perimetro(retangulo Retangulo) float64 {
return 2 * (retangulo.Largura + retangulo.Altura)
}

// Circulo representa um círculo.
type Circulo struct {
Raio float64
}

// Area retorna a área de um círculo
func (c Circulo) Area() float64 {
return math.Pi * c.Raio * c.Raio
}
36 changes: 36 additions & 0 deletions estruturas-metodos-e-interfaces/v5/formas_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package main

import (
"testing"
)

func TestPerimetro(t *testing.T) {
retangulo := Retangulo{10.0, 10.0}
resultado := Perimetro(retangulo)
esperado := 40.0

if resultado != esperado {
t.Errorf("resultado %.2f, esperado %.2f", resultado, esperado)
}
}

func TestArea(t *testing.T) {
verificaArea := func(t *testing.T, forma Forma, esperado float64) {
t.Helper()
resultado := forma.Area()

if resultado != esperado {
t.Errorf("resultado %.2f, esperado %.2f", resultado, esperado)
}
}

t.Run("retângulos", func(t *testing.T) {
retangulo := Retangulo{12.0, 6.0}
verificaArea(t, retangulo, 72.0)
})

t.Run("círculos", func(t *testing.T) {
circulo := Circulo{10}
verificaArea(t, circulo, 314.1592653589793)
})
}
34 changes: 34 additions & 0 deletions estruturas-metodos-e-interfaces/v6/formas.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package main

import "math"

// Forma é implementado por qualquer coisa que possa dizer qual é sua área
type Forma interface {
Area() float64
}

// Retangulo tem as dimensões de um retângulo
type Retangulo struct {
Largura float64
Altura float64
}

// Area retorna a área de um retângulo
func (r Retangulo) Area() float64 {
return r.Largura * r.Altura
}

// Perimetro retorna o perímetro de um retângulo
func Perimetro(retangulo Retangulo) float64 {
return 2 * (retangulo.Largura + retangulo.Altura)
}

// Circulo representa um círculo.
type Circulo struct {
Raio float64
}

// Area retorna a área de um círculo
func (c Circulo) Area() float64 {
return math.Pi * c.Raio * c.Raio
}
32 changes: 32 additions & 0 deletions estruturas-metodos-e-interfaces/v6/formas_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package main

import (
"testing"
)

func TestPerimetro(t *testing.T) {
retangulo := Retangulo{10.0, 10.0}
resultado := Perimetro(retangulo)
esperado := 40.0

if resultado != esperado {
t.Errorf("resultado %.2f, esperado %.2f", resultado, esperado)
}
}

func TestArea(t *testing.T) {
testesArea := []struct {
forma Forma
esperado float64
}{
{Retangulo{12, 6}, 72.0},
{Circulo{10}, 314.1592653589793},
}

for _, tt := range testesArea {
resultado := tt.forma.Area()
if resultado != tt.esperado {
t.Errorf("resultado %.2f, esperado %.2f", resultado, tt.esperado)
}
}
}
45 changes: 45 additions & 0 deletions estruturas-metodos-e-interfaces/v7/formas.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package main

import "math"

// Forma é implementado por qualquer coisa que possa dizer qual é sua área
type Forma interface {
Area() float64
}

// Retangulo tem as dimensões de um retângulo
type Retangulo struct {
Largura float64
Altura float64
}

// Area retorna a área de um retângulo
func (r Retangulo) Area() float64 {
return r.Largura * r.Altura
}

// Perimetro retorna o perímetro de um retângulo
func Perimetro(retangulo Retangulo) float64 {
return 2 * (retangulo.Largura + retangulo.Altura)
}

// Circulo representa um círculo.
type Circulo struct {
Raio float64
}

// Area retorna a área de um círculo
func (c Circulo) Area() float64 {
return math.Pi * c.Raio * c.Raio
}

// Triangulo representa as dimensões de um triângulo
type Triangulo struct {
Base float64
Altura float64
}

// Area retorna a área de um triângulo
func (t Triangulo) Area() float64 {
return (t.Base * t.Altura) * 0.5
}
Loading

0 comments on commit 308ce05

Please sign in to comment.