Empleando interfaces para inyectar capas o dependencias

go-interfaces

Trabajar con Interfaces facilita la inyeccion de capas, y tambien el testing de cada capa.

Para desarrollar con este mecanismo es necesario que cada capa cuente con tres elementos fundamentales

1. Interfaz

Cada método exportable debera estar expuesto a través de la interfaz.

type RepositoryInterfaz interface{
    LlamarSP() (string, error)
}

2. Struct

Imaginemos que cada capa o dependencia que queremos usar es un objeto con metodos que cumplen con la interfaz determinada previamente, para esto creamos un struct y hacemos que dicho struct cumpla con lo definido por la interfaz. Adicionalmente cada podemos aprovechar y definir que dependencias externas queremos inyectar. Por ejemplo: La capa repository necesita una base de datos del tipo sql.DB, entonces podemos definir el struct para que esté adentro contenge un objeto de este tipo. Si, lo se.. esto es un chino.. pero con la practica se va comprendiendo mejor.

type repositoryStruct struct{
    db *sql.DB
}

func (rs *repositoryStruct)LlamarSP() (string, error){
    return "", nil
}

3. Funcion constructora

Creamos una funcion publica que será la que invocaremos para crear nuestra dependencia

func NewRepository(dbAUtilizar *sql.DB) RepositoryInterfaz{
    return &repositoryStruct{
        db: dbAUtilizar,
    }
}
Similar Resources

Tutorial para Go

Plain-go-tutorial Tutorial para Go. Descarga antes de nada los siguientes componentes para la formación. https://code.visualstudio.com/ https://go.dev

Nov 28, 2021

Projeto de biomecânica para tentar avaliar photoelasticidade

Projeto de biomecânica para tentar avaliar photoelasticidade

Alunos Carlos Manuel de Jesus Puentes Valdes 11812591 O que esse programa faz? A partir de uma região da imagem, vão ser buscadas regiões vizinhas de

Dec 1, 2021

e-distribucion (Endesa) API para la lectura remota de contadores inteligentes

e-Distribucion API Go API to read Endesa energy meters info. Ported from Python to Go using https://github.com/trocotronic/edistribucion. You'll need

Dec 4, 2021

Prueba de concepto: Boletia, una aplicación para venta de boletos, basada en microservicios event-driven. Desarrollada sobre AWS Serverless: Api Gateway, Lambda, DynamoDB, DynamoDB Streams

Prueba de concepto: Boletia, una aplicación para venta de boletos, basada en microservicios event-driven. Desarrollada sobre AWS Serverless: Api Gateway, Lambda, DynamoDB, DynamoDB Streams

Prueba de concepto: Boletia, una aplicación para venta de boletos, basada en microservicios event-driven. Desarrollada sobre AWS Serverless: Api Gatew

May 7, 2022

Repositório para macetar o Gin com requests.

macetada/gin Repositório para macetar o Gin com requests. Subindo o server docker build -t gin . docker run --rm -p 8082:80 gin ou: docker pull ghcr.i

Dec 10, 2021

API REST para saber en base a un punto (lat, long), la sucursal más cercana al mismo.

location API REST para saber en base a un punto (lat, long), la sucursal más cercana al mismo. Construido con 🛠 Golang - Lenguaje de programación. SQ

Oct 3, 2022

📚 API para o projeto final de LP2

📚 API - Sistema de Biblioteca Online API para o trabalho de LP2 Entitys check all entity in https://excalidraw.com/#json=FzJIjkvNyN_CnS_v9FcY0,aVEP5R

Jan 11, 2022

Micro-serviço em Golang para processar pagamentos de um Gateway.

Micro-serviço em Golang para processar pagamentos de um Gateway.

Go Payment Processor Projeto Este repositório contém um micro-serviço em Golang que faz parte de um conjunto de serviços necessário para o projeto do

Dec 13, 2021

Proyecto para comprobación y migración de base de datos con versionado modular

rfcheckbd El objetivo de este proyecto es poder realizar migraciones y comprobaciones de bases de datos sin tener que depender de proyectos externos c

Dec 27, 2021

repo de teste para executar á pipeline do rancher

pipeline-example-go This is a sample golang project to demonstrate the integration with rancher pipeline. Building go build -o ./bin/hello-server Runn

Dec 19, 2021

API desarrollada en Go (Golang) para modificar precios en una tienda eCommerce (Shopify)

API desarrollada en Go (Golang) para modificar precios en una tienda eCommerce (Shopify)

Go eCommerce API API para modificar precios de productos en una tienda eCommerce de Shopify. Instrucciones Ingresar a la tienda eCommerce. Seleccionar

Oct 1, 2021

Una aplicación para agendar escrita en Go.

Go tutorial Getting started # Initialize go module go mod init module-path in go, all things must be inside a package. So, in the first line we must

Dec 31, 2021

Repositório destinado para acompanhar meu aprendizado na linguagem Go, desde o básico "Hello, World!" até a elaboração de um projeto ainda não definido. 🙂

go-basics Repositório destinado para acompanhar meu aprendizado na linguagem Go, desde o básico "Hello, World!" até a elaboração de um projeto ainda n

Jan 7, 2022

Requser - Aplicação responsável por solicitar ao concierge, listas de permissões, inclusão de permissão, exclusão de permissão para o ambiente.

requser ⚠ Atenção ⚠ 🛠 Esta área está em desenvolvimento 🛠 Aplicação responsável por solicitar ao https://github.com/Pinablink/concierge, listas de p

Dec 31, 2021

Goemail - Libreria sencilla y completa para el envio de correos con golang (go)

SENDING EMAIL - GoEmail Install librery go get github.com/Leonardo-Antonio/goemail Use Configuración y envío del mensaje (html template) func main ()

Dec 31, 2021

Solución para disponer de un sistema de encendido y apagado remoto de equipos.

Solución para disponer de un sistema de encendido y apagado remoto de equipos.

Arrancar y detener equipos en remoto En algunas situaciones puede resultar interesante poder encender un PC en remoto, tanto desde la propia LAN del e

Jan 4, 2022

Pacote de integração para utilizar dynamo com lambda

Dynamo for lambda Pacote criado para utilizar o dynamo db com lambda functions Para rodar o projeto Certifique-se de ter instalado Docker e docker-com

Jan 11, 2022

Alura Challenge Backend 3 - Desenvolva uma aplicação web para analisar e investigar transações financeiras

alura-challenge-backend Descrição Aplicação para upload e análise de transações financeiras. Suporte arquivos .csv com os campos abaixo (não utilizar

Aug 17, 2022

Code for the website / Código para o site

Site crdpa.net Code for the new website This is the frontend and backend code for my new website. It is for my use only. If you want to use it, you ar

May 11, 2022
Generate TypeScript interfaces from Go structs/interfaces - useful for JSON RPC

bel Generate TypeScript interfaces from Go structs/interfaces - useful for JSON RPC bel is used in production in https://gitpod.io. Getting started be

Oct 23, 2022
Golang-Devnet-Interfaces - Quick example of using Scrapligo and TextFSM to parse interfaces from Devnet Sandbox

Scrapligo & TextFSM This is a simple example of using the Scrapligo library deve

Mar 7, 2022
Repositório para a aula sobre integração do containerd com Golang
Repositório para a aula sobre integração do containerd com Golang

Integrando containers nativamente usando Golang Este é o código finalizado da aplicação Já pensou em uma alternativa ao Docker? Que tal manipular cont

May 4, 2021
Laboratorios y guías en español para aprender Docker de manera práctica

Docker Labs Laboratorios y guías en español para aprender Docker de manera práctica. Iniciando Clona el repositorio Navega a través de la carpeta de l

Jun 21, 2022
Teste prático para vaga de back-end Python / Go na Stone.

Stone_GitHub_API_Golang Teste prático para vaga de back-end Python / Go na Stone. Nota 1: Utilizar a branch Release Nota 2: É necessário adicionar o T

Jun 26, 2021
Simples exemplo de CRUD para armazenar em memoria os dados vindo do JSON.

API Growth Este repositório foi criado para colocarmos projetos em diversas linguagens com intúito totalmente didático para colaborar com a comunidade

Dec 14, 2022
Ambiente com Docker de "live-reload" para aplicações Go

Ambiente Go Um ambiente de "live reload", onde as alterações no código são observadas e re-executadas automaticamente, com Docker e Docker Compose. O

Jun 17, 2022
Bot para o discord escrito em Golang durante o workshop ministrado na Codecon 2021

Codecon Bot Bot para o discord escrito em Golang durante o workshop ministrado na Codecon 2021 Primeiramente no arquivo main.go coloque o TOKEN do bot

Oct 4, 2021
Ejemplo de un k8s custom controller para un CRD nuevo

Clonado de kubernetes/sample-controller Para pruebas de un CRD nuevo This repository implements a simple controller for watching Foo resources as defi

Nov 3, 2021
Apis para la administracion de notifiaciones, utilizando servicios como AWS SNS y AWS SQS

notificacion_api Servicio para envío de notificaciónes por difusión en AWS SNS Especificaciones Técnicas Tecnologías Implementadas y Versiones Golang

Jan 7, 2022