Vis*_*h K 2 concurrency go gorilla
我正在 golang 中编写其余 api,结构如下
处理程序类:
type Controller struct {
db daos.IUserDB
}
func NewController(db daos.IUserDB) *Controller{
return &Controller{db:db}
}
func (c *Controller) Test(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Welcome to the HomePage!")
}
func (c *Controller) RegisterRoutes(r *mux.Router){
r.HandleFunc("/test", c.Test).Methods("GET")
}
Run Code Online (Sandbox Code Playgroud)
DAO 类
type IUserDB interface {
Get
GetByID ...
}
type userDAO struct {
db *sql.DB
}
func NewDB(dataSourceName string) (*userDAO, error) {
db, err := sql.Open("mysql", dataSourceName)
if err != nil {
return nil, err
}
if err = db.Ping(); err != nil {
return nil, err
}
return &userDAO{db}, nil
}
func (dao *userDAO) Get(){
}
func (dao *userDAO) GetByID(){
}
Run Code Online (Sandbox Code Playgroud)
主班
func main() {
db, err := daos.NewDB(connectionStr)
if err != nil {
log.Panic(errr)
}
handler := handlers.NewController(db)
router := mux.NewRouter()
handler.RegisterRoutes(router)
log.Printf("serving on port 8080")
http.ListenAndServe(":3000", router)
}
Run Code Online (Sandbox Code Playgroud)
问题:
我们只创建Handler 和 Repository对象的一个实例。(也会制作另一个服务接口)
golang 如何通过此设置实现并发多个请求的并发性?
对于每个请求,将使用相同的处理程序或数据库对象?
帮助澄清这个设计吗?