代码之家  ›  专栏  ›  技术社区  ›  Abhra Sarkar

在其他包中导入时,Structs方法未定义

  •  0
  • Abhra Sarkar  · 技术社区  · 2 年前

    我有一个模型文件,其中有一个struct方法。我想在控制器中使用的方法。但它说“ 包模型未声明GetBookings “.我对Golang很陌生,也许这是一个愚蠢的问题,但我仍然坚持不住。如果有人能纠正我的代码,或者可以在另一个文件中提供如何使用结构方法的另一个选项,我将不胜感激。提前感谢。”。

    控制器

    package controllers
    
    import (
        "encoding/json"
        "net/http"
    
        "github.com/Coddyy/beautyfly/pkg/models"
    )
    
    func GetBookings(w http.ResponseWriter, r *http.Request) {
        bookings, err := models.GetBookings()
        res, _ := json.Marshal(bookings)
        w.Header().Set("Access-Control-Allow-Origin", "*")
        w.Header().Set("Content-Type", "application/json")
        w.WriteHeader(http.StatusOK)
        w.Write(res)
    }
    

    模型

    package models
    
    import (
        "database/sql"
    
        "github.com/Coddyy/beautyfly/pkg/entities"
    )
    
    type BookingModel struct {
        Db *sql.DB
    }
    
    func init() {
    
    }
    
    func (bookingModel *BookingModel) GetBookings() ([]entities.Booking, error) {
        rows, err := bookingModel.Db.Query("SELECT * FROM bookings")
        if err != nil {
            return nil, err
        } else {
            bookings := []entities.Booking{}
            for rows.Next() {
                var id int64
                var customer_ids string
                var date string
                var time string
                var service_ids string
                var comments string
                err2 := rows.Scan(&id, &customer_ids, &date, &time, &service_ids, &comments)
                if err2 != nil {
                    return nil, err2
                } else {
                    booking := entities.Booking{id, customer_ids, date, time, service_ids, 
                    comments}
                    bookings = append(bookings, booking)
                }
            }
            return bookings, nil
        }
    }
    
    1 回复  |  直到 2 年前
        1
  •  0
  •   ABDULLOKH MUKHAMMADJONOV    2 年前

    为了打电话 GetBookings() 的方法 BookingModel 你需要一个的实例 预订模型 结构。然后您可以调用的任何方法 预订模型 在该实例中:

    func GetBookings(w http.ResponseWriter, r *http.Request) {
        var bookingModel = models.BookingModel{}
    
        bookings, err := bookingModel.GetBookings()
        // always do error checking
        if err != nil {
            ...
        }
    
        res, err := json.Marshal(bookings)
        // always do error checking
        if err != nil {
            ...
        }
    
        w.Header().Set("Access-Control-Allow-Origin", "*")
        w.Header().Set("Content-Type", "application/json")
        w.WriteHeader(http.StatusOK)
        w.Write(res)
    }