Esquematización del proyecto de banco en línea

Completado

Vamos a hablar sobre lo que vamos a crear. Como se mencionó anteriormente, crearemos dos proyectos: uno para la lógica principal del programa y otro para exponer la lógica a través de una API web. Imagine que ahora forma parte de un equipo que está creando un sistema de banco en línea.

Definición de las características y los requisitos

El banco en línea que se va a crear es una prueba de concepto, que determinará si es factible crear el programa para el banco. En esta primera iteración, la interacción con el paquete principal se realizará a través de un programa de la CLI. No tendremos una interfaz de usuario ni se conservarán los datos en una base de datos. Para ver el extracto de cuenta de un cliente, se expondrá un punto de conexión.

El sistema de banco en línea:

  • Permitirá a los clientes crear una cuenta.
  • Permitirá a los clientes retirar dinero.
  • Permitirá a los clientes transferir dinero a otra cuenta.
  • Proporcionará un extracto de cuenta con los datos del cliente y un saldo final.
  • Expondrá una API web a través de un punto de conexión para imprimir un extracto de cuenta.

Lo crearemos juntos, así que, por el momento, no se preocupe demasiado por los detalles.

Creación de los archivos de proyecto iniciales

Vamos a crear el conjunto inicial de archivos que necesitamos para el programa. Vamos a crear un paquete de Go para toda la lógica principal del banco y un programa main para inicializar el sistema con unos pocos clientes y acciones como los ingresos y las transferencias. Además, este programa main iniciará un servidor de API web para exponer un punto de conexión para el extracto de cuenta.

Vamos a crear la siguiente estructura de archivos en el directorio $GOPATH:

$GOPATH/
  src/
    bankcore/
      go.mod
      bank.go
    bankapi/
      go.mod
      main.go

Después, para asegurarnos de que podemos centrarnos solo en escribir código en los archivos adecuados, vamos a empezar a escribir un programa Hello World! que confirmará que se puede llamar al paquete bankcore desde el programa principal bankapi.

Copie y pegue el siguiente fragmento de código en src/bankcore/bank.go:

package bank

func Hello() string {
    return "Hey! I'm working!"
}

Usaremos módulos de Go. En src/bankcore/go.mod, agregue el siguiente contenido para dar un nombre adecuado a este paquete para que podamos hacer referencia a él más adelante:

module github.com/msft/bank

go 1.14

Después, agregue el siguiente código para llamar al paquete bankcore en src/bankapi/main.go:

package main

import (
    "fmt"

    "github.com/msft/bank"
)

func main() {
    fmt.Println(bank.Hello())
}

En src/bankapi/go.mod, es necesario hacer referencia a los archivos de paquete de bankcore localmente, de la siguiente manera:

module bankapi

go 1.14

require (
    github.com/msft/bank v0.0.1
)

replace github.com/msft/bank => ../bankcore

Para asegurarse de que todo funciona, abra un terminal en el directorio $GOPATH/src/bankapi/ y ejecute el comando siguiente:

go run main.go

Debería ver la siguiente salida:

Hey! I'm working!

Esta salida confirma que los archivos del proyecto están configurados exactamente como deberían. A continuación, comenzaremos a escribir el código para implementar el conjunto inicial de características para nuestro sistema de banco en línea.