J'essaie de séparer mon code http go en "contrôleurs" en créant un nouveau paquet pour eux, mais je n'arrive pas à trouver comment passer un type de db dans le gestionnaire. Je veux pouvoir passer le type de base de données que je crée dans main.go dans mon gestionnaire d'index dans index.go. Si ce n'est pas la bonne façon de résoudre le problème, faites-moi part d'une meilleure solution (j'apprends au fur et à mesure et j'aimerais garder les choses simples pour l'instant). Mon code jusqu'à présent :
main.go :
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/gorilla/mux"
"log"
"mvc3/app/c"
"net/http"
)
var Db *sql.DB
func main() {
fmt.Println("Starting up!")
var err error
Db, err = sql.Open("mysql", "root@/dev?charset=utf8")
if err != nil {
log.Fatalf("Error on initializing database connection: %s", err.Error())
}
Db.SetMaxIdleConns(100)
err = Db.Ping()
if err != nil {
log.Fatalf("Error on opening database connection: %s", err.Error())
}
r := mux.NewRouter()
r.HandleFunc("/", c.Index)
http.Handle("/", r)
http.ListenAndServe(":8080", nil)
}
/app/c/index.go :
package c
import (
"fmt"
"net/http"
)
func Index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello world!")
}
Merci !