¿Cuál es la ventaja de definir su aplicación como una estructura en Go?
Encapsulación de preocupaciones relacionadas.
El tutorial al que se vinculó básicamente usa dos cosas:
- Cómo encontrar mensajes ocultos o aplicaciones en mi teléfono
- ¿Cuáles son las mejores aplicaciones de banca móvil en la India?
- ¿Existe una buena aplicación que te permita conectarte con personas de todo el mundo con intereses similares a los míos?
- ¿Cuándo se actualiza WhatsApp visto por última vez?
- ¿Cuáles son las mejores aplicaciones de Android para geeks tecnológicos?
- Un enrutador Gorilla Mux para manejar solicitudes REST
- Una conexión de base de datos para recuperar y actualizar datos basados en esas solicitudes REST
Lógicamente, los dos están íntimamente relacionados, por lo tanto, ponerlos en una sola estructura tiene mucho sentido y ayuda a evitar errores tontos como el uso de un enrutador configurado para manejar /products
solicitudes de /products
con una conexión DB a una base de datos de users
.
Encapsular ambas cosas juntas en una estructura de App
también le permite agregar métodos, que manipulan y controlan ambas cosas en cualquier estructura de App
. Initialize()
es un ejemplo de tal método.
Los programadores de C ++ reconocerían instantáneamente este estilo de codificación como programación basada en clases . El siguiente código en Ir:
escriba App struct {
Enrutador * mux.
DB * sql.DB
}
func (a * App) Inicializar (…) {
…
a.DB, err = sql.Open (“postgres”, …)
…
a.Router = mux.NewRouter ()
…
}
es casi exactamente equivalente a C ++ ‘s:
Aplicación de clase {
público:
mux :: Enrutador * Enrutador;
sql :: DB * DB;
nulo Inicializar (…);
}
Aplicación nula :: Inicializar (…) {
…
this-> DB = sql :: Open (“postgres”, …);
…
this-> Router = mux :: NewRouter ();
…
}
Se me ocurrió que podría haber estado confundido por el uso del tutorial del nombre App
para la estructura de datos central de la aplicación. Llamar a una App
struct no hace que el compilador Go lo trate de ninguna manera especial; su aplicación aún comienza a ejecutarse en la función main()
del paquete main
, por ejemplo.
Personalmente, habría llamado a esa estructura REST_Endpoint
en REST_Endpoint
lugar, para evitar la confusión de la que pareces haber sido presa.