美好的一天!在此程序中,我制作了包括Handle功能的餐厅菜单。

问题陈述:
我无法连接数组:Name, Price与函数getallget

package main

import (
    "fmt"
    "net/http"
    "io"
    "strconv"
    "net/url"
)

type Menu struct {
    Name string
    Price  int
    description string
}

func  (m Menu) String() string {
    return fmt.Sprintf("%s: %s", m.Name, m.Price, )
}

func main() {
    x :=[]Menu{
        {Name:"Crispy", Price:31},
        {Name:"Burger", Price:42},
        {Name:"Superstar",Price:17},
        /*{"Cola", 26},
        {Name:"Superstar", Price:40},
        {Name:"Nuggets", Price:19},*/
    }
    //getall(&x)
    fmt.Println(x)

    http.HandleFunc("/getall", getall)
    http.HandleFunc("/get", get)
    http.ListenAndServe(":8080", nil)
}

func getall(w http.ResponseWriter, r *http.Request) {
    for _,num := range []Menu{}{
        io.WriteString(w, "<p>"+m.Name+" Price "+strconv.Itoa(num)+"</p>")
    }
}

func get(w http.ResponseWriter, r *http.Request) {
    url := url.URL{}
    println(url.String())
    attr := r.URL.Query()
    fmt.Println(attr)
    id := attr["id"][0]
    fmt.Println("id of request " + id)
    v := id
    d:= []Menu{}
    if a, err := strconv.Atoi(v);
    err == nil {
        io.WriteString(w, "<p> "+Name[a-1]+" price "+strconv.Itoa(d[a-1])+"</p>")
    }
}

帮助我在getallget函数中实现数组。

最佳答案

我想为您提供帮助,因为您似乎真的在尝试学习。我没有对您的代码进行任何更改。我已经在每个处理程序中移动了菜单列表。您可以将其保持全球性。在下面找到更改的代码。

package main

import (
    "fmt"
    "io"
    "net/http"
    "net/url"
    "strconv"
)

type Menu struct {
    Name        string
    Price       int
    description string
}

func (m Menu) String() string {
    return fmt.Sprintf("%s: %s", m.Name, m.Price)
}

func main() {
    fmt.Println(x)

    http.HandleFunc("/getall", getall)
    http.HandleFunc("/get", get)
    http.ListenAndServe(":8080", nil)

}

func getall(w http.ResponseWriter, r *http.Request) {

    x := []Menu{
        {Name: "Crispy", Price: 31},
        {Name: "Burger", Price: 42},
        {Name: "Superstar", Price: 17},
    }

    for _, m := range x {

        io.WriteString(w, "<p>"+m.Name+" Price "+strconv.Itoa(m.Price)+"</p>")
    }

}

func get(w http.ResponseWriter, r *http.Request) {

    x := []Menu{
        {Name: "Crispy", Price: 31},
        {Name: "Burger", Price: 42},
        {Name: "Superstar", Price: 17},
    }

    url := url.URL{}
    println(url.String())
    attr := r.URL.Query()
    fmt.Println(attr)
    id := attr["id"][0]
    fmt.Println("id of request " + id)
    v := id
    if a, err := strconv.Atoi(v); err == nil {
        io.WriteString(w, "<p> "+x[a-1].Name+" price "+strconv.Itoa(x[a-1].Price)+"</p>")
    }

}

尝试访问:http://localhost:8080/getallhttp://localhost:8080/get?id=1

关于go - 美好的一天!在此程序中,我制作了包含Handle函数的餐厅菜单。我无法连接数组:Name,Price和函数getall和get,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45029816/

10-14 13:50
查看更多