Wie verwende ich die Go-Sprache, um das Benutzer-Feedback-Modul im Tür-zu-Tür-Kochsystem zu schreiben?
Mit dem Aufkommen von Take-Away- und Tür-zu-Tür-Diensten entscheiden sich immer mehr Benutzer dafür, köstliches Essen zu Hause zu genießen. Bei Tür-zu-Tür-Kochdiensten ist das Feedback der Nutzer besonders wichtig, da es dazu beitragen kann, die Servicequalität und die Zufriedenheit der Nutzer zu verbessern. In diesem Artikel wird erläutert, wie Sie mithilfe der Go-Sprache das Benutzer-Feedback-Modul im Tür-zu-Tür-Kochsystem schreiben und spezifische Codebeispiele bereitstellen.
Zuerst müssen wir eine Datenbank entwerfen, um Benutzer-Feedback-Informationen zu speichern. Angenommen, wir haben eine Tabelle mit dem Namen „Feedback“, die die folgenden Felder enthält: id (automatisch inkrementierender Primärschlüssel), userId (Benutzer-ID), content (Feedback-Inhalt), createTime (Erstellungszeit).
Verwenden Sie die folgende SQL-Anweisung, um die Feedback-Tabelle zu erstellen:
CREATE TABLE feedback (
id INT AUTO_INCREMENT PRIMARY KEY, userId INT NOT NULL, content TEXT NOT NULL, createTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Stellen Sie sicher, dass die Go-Sprachumgebung installiert und GOPATH festgelegt ist.
Führen Sie den folgenden Befehl in der Befehlszeile aus, um ein neues Go-Modul zu erstellen:
go mod init feedback
Erstellen Sie eine Datei mit dem Namen db im Stammverzeichnis der Projekt-.go-Datei und fügen Sie den folgenden Code hinzu:
package main
import (
"database/sql" "fmt" _ "github.com/go-sql-driver/mysql"
)
func ConnectDB() (*sql.DB, Fehler) {
db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/feedback") if err != nil { return nil, fmt.Errorf("failed to connect to database: %v", err) } err = db.Ping() if err != nil { return nil, fmt.Errorf("failed to ping database: %v", err) } return db, nil
}
replace "root:password „Ersetzen Sie „“ durch Ihren Datenbank-Benutzernamen und Ihr Passwort und „feedback“ durch den Namen der von Ihnen erstellten Datenbank.
Erstellen Sie eine Datei namens „feedback.go“ im Stammverzeichnis des Projekts und fügen Sie den folgenden Code hinzu:
package main
import (
"database/sql" "fmt" "time"
)
type Feedback struct {
ID int UserID int Content string CreateTime time.Time
}
func InsertFeedback(db sql.DB, feedback Feedback) Fehler {
stmt, err := db.Prepare("INSERT INTO feedback(userId, content) VALUES(?, ?)") if err != nil { return fmt.Errorf("failed to prepare insert statement: %v", err) } defer stmt.Close() _, err = stmt.Exec(feedback.UserID, feedback.Content) if err != nil { return fmt.Errorf("failed to execute insert statement: %v", err) } return nil
}
func GetFeedbacks(db sql.DB) ([]Feedback, Fehler) {
rows, err := db.Query("SELECT * FROM feedback") if err != nil { return nil, fmt.Errorf("failed to execute query: %v", err) } defer rows.Close() feedbacks := make([]*Feedback, 0) for rows.Next() { feedback := &Feedback{} err := rows.Scan(&feedback.ID, &feedback.UserID, &feedback.Content, &feedback.CreateTime) if err != nil { return nil, fmt.Errorf("failed to scan feedback: %v", err) } feedbacks = append(feedbacks, feedback) } return feedbacks, nil
"encoding/json" "log" "net/http"
db, err := ConnectDB() if err != nil { log.Fatalf("failed to connect to database: %v", err) } defer db.Close() http.HandleFunc("/feedback", func(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet: feedbacks, err := GetFeedbacks(db) if err != nil { log.Printf("failed to get feedbacks: %v", err) http.Error(w, "Internal server error", http.StatusInternalServerError) return } json.NewEncoder(w).Encode(feedbacks) case http.MethodPost: var feedback Feedback err := json.NewDecoder(r.Body).Decode(&feedback) if err != nil { log.Printf("failed to decode feedback: %v", err) http.Error(w, "Bad request", http.StatusBadRequest) return } err = InsertFeedback(db, &feedback) if err != nil { log.Printf("failed to insert feedback: %v", err) http.Error(w, "Internal server error", http.StatusInternalServerError) return } w.WriteHeader(http.StatusCreated) default: http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) } }) log.Println("Server listening on :8000") log.Fatal(http.ListenAndServe(":8000", nil))
Das obige ist der detaillierte Inhalt vonWie schreibe ich mit der Go-Sprache das Benutzer-Feedback-Modul im Tür-zu-Tür-Kochsystem?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!