Como trabalhar com herança em Go

Uma dúvida que tenho visto com certa frequência é sobre as classes e herança em Go.

Sempre lembrando que GO não tem orientação a objetos na sua forma original de ser. Porém, quando o assunto é classe e herança, é possível alcançar algo similar utilizando structs e a técnica de embedding.

Tento esclarecido isso, vamos ver como podemos utilizar “herança” em Go imaginando um banco de dados com 4 tabelas.

imagem meramente ilustrativa 😉
Leia mais »

Como fazer encadeamento de métodos (chaining)

Chaining de métodos é uma técnica muito utilizada em linguagens como PHP, Java e C#. Se você não está familiarizado com o termo, não se preocupe, pois essa é uma técnica muito simples. Ela consiste em retornar um objeto para que outro método possa ser chamado sem a necessidade de atribuição a uma outra variável.

Essa técnica é muito utilizada em ORMs como o GORM, para construção de queries mais complexas.

No vídeo que postamos no nosso canal do youtube mostrando como construir uma API completa com go-chi e postgres (link para o vídeo), também podemos ver essa técnica sendo utilizada para fazer o decode da request para uma struct.

Para entender melhor seu funcionamento, vamos criar uma struct com 100% de seus atributos privados.

Leia mais »

O que são structs e como usá-las

Muitas vezes utilizar somente os tipos primitivos de uma linguagem não é o suficiente para desenvolver um programa escalável. Na maioria das linguagens mais modernas, é nesse momento que criamos uma classe com todos os atributos e métodos que precisamos.

Em Go não existe o conceito de orientação a objetos, ou seja, não existem classes, herança, polimorfismo e etc… Então como fazemos quando precisamos trabalhar com estruturas de dados mais complexas?

Fácil, nós criamos uma struct.

Struct é um tipo de coleção de campos, onde cada campo tem seu tipo de dado, podendo inclusive ser uma outra struct. Vamos ver um exemplo básico.

type Pessoa struct {
    Nome string
    Sobrenome string
    Idade int8
}
Leia mais »