2015-03-21 2 views
0

Это мой код в Go и все правильно я думаю ....Go неожиданный строковый литерал

package main 

import(
"fmt" 
"encoding/json" 
"net/http" 

) 
type Payload struct { 
    Stuff Data 
} 
type Data struct { 
    Fruit Fruits 
    Veggies Vegetables 
} 
type Fruits map[string]int 
type Vegetables map[string]int 


func 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"] = 25 
fruits["Oranges"] = 11 

vegetables := make(map[string]int) 
vegetables["Carrots"] = 21 
vegetables["Peppers"] = 0 

d := Data{fruits, vegetables} 
p := Payload{d} 

return json.MarshalIndent(p, "", " ") 

} 

И это ошибка я получаю

API_Sushant.go:31: syntax error: unexpected string literal, expecting semicolon or newline or } 

Может кто-нибудь сказать мне, Что ошибка plz ....

+0

Сообщение об ошибке, которое вы получаете, не воспроизводимо. Строка 31 - одна из пустых строк в середине вашей программы. –

ответ

1

В вашем примере есть несколько мелких опечаток. После их исправления, ваш пример пробежал меня без ошибки 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) Возвращение JSON в HTTP Response

Поскольку fmt.Println записывает в стандартный вывод и fmt.Fprintln записывает в комплект поставки io.Writer, чтобы вернуть JSON в HTTP ответьте, используйте следующее:

fmt.Fprintln(w, string(response)) 
+0

Это сработало, спасибо много .... –

Смежные вопросы