为了账号安全,请及时绑定邮箱和手机立即绑定

去意外的字符串文字

去意外的字符串文字

Go
心有法竹 2021-09-27 09:30:11
这是我在 Go 中的代码,我猜一切都是正确的......package mainimport("fmt""encoding/json""net/http")type Payload struct {    Stuff Data}type Data struct {    Fruit Fruits    Veggies Vegetables}type Fruits map[string]inttype Vegetables map[string]intfunc serveRest(w http.ResponseWriter, r *httpRequest){    response , err := getJsonResponse()    if err != nil{        panic(err)    }    fmt.println(w, string(response))}func main(){http.HandleFucn("/", serveRest)http.ListenAndServe("localhost:1337",nil)}func getJsonResponse() ([]byte, error){fruits := make(map[string]int)fruits["Apples"] = 25fruits["Oranges"] = 11vegetables := make(map[string]int)vegetables["Carrots"] = 21vegetables["Peppers"] = 0d := Data{fruits, vegetables}p := Payload{d}return json.MarshalIndent(p, "", "  ")}这是我得到的错误API_Sushant.go:31: syntax error: unexpected string literal, expecting semicolon or newline or }谁能告诉我错误是什么请....
查看完整描述

1 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

您的示例中有一些小错误。修复这些之后,您的示例为我运行而没有unexpected string literal错误。此外,如果要将 JSON 写入http.ResponseWriter,则应更改fmt.Println为fmt.Fprintln如下面的第 2 部分所示。


(1) 轻微错别字


# Error 1: undefined: httpRequest

func serveRest(w http.ResponseWriter, r *httpRequest){

# Fixed:

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


# Error 2: cannot refer to unexported name fmt.println

fmt.println(w, string(response))

# Fixed to remove error. Use Fprintln to write to 'w' http.ResponseWriter

fmt.Println(w, string(response))


# Error 3: undefined: http.HandleFucn

http.HandleFucn("/", serveRest)

# Fixed

http.HandleFunc("/", serveRest)

(2) HTTP Response 中返回 JSON


因为fmt.Println写入标准输出并fmt.Fprintln写入提供的 io.Writer,要在 HTTP 响应中返回 JSON,请使用以下内容:


fmt.Fprintln(w, string(response))


查看完整回答
反对 回复 2021-09-27
  • 1 回答
  • 0 关注
  • 243 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信