我最近开始学习 Go lang 。我花了几个小时但却无法弄清楚这有什么问题。
这是我的代码:
func preference(cc *core.ComponentContext, w http.ResponseWriter, req *http.Request){
userID, err := core.PostParam(req, "user_id")
key, err := core.PostParam(req, "key")
value, err := core.PostParam(req, "value")
if err != nil {
cc.Error("Error reading the user id:", err.Error())
msg := fmt.Sprintf("user_id: %s", err.Error())
http.Error(w, msg, http.StatusBadRequest)
return
}
response :=models.UserPrefer(cc, userID int64, key string, value string) --> compile time error
b, err := json.Marshal(response)
if err != nil {
http.Error(w, "Internal Error", http.StatusInternalServerError)
return
}
fmt.Fprintf(w, string(b[:]))
}
以下错误是抛出语法错误:意外名称,期待 它可能很简单,但由于我对Go lang的了解有限,我无法弄明白。
答案 0 :(得分:7)
调用方法时传递类型
使用
response :=models.UserPrefer(cc, userID, key, value)
而不是
response :=models.UserPrefer(cc, userID int64, key string, value string)
答案 1 :(得分:3)
调用函数时只需传递参数。您不需要传递参数类型。
答案 2 :(得分:1)
当我在实例化类型时忘记放入冒号时,我得到了一个与此非常相似的错误。创建了一个最小的示例进行说明。
prog.go:11:12:语法错误:意外的文字为“ Sedimentary”,期望用逗号或}
https://play.golang.org/p/QKmcOHnsF7C
在此示例中,我只需要在属性名称后添加一个冒号即可。
r := Rock{
RockType: "Sedimentary", // the ":" was missing, and is in the go play link above
}
答案 3 :(得分:1)
我收到此错误是因为我使用reserved
关键字作为方法的参数名称。
引发此错误的代码段:
func setCustomTypeData(set bson.M, type string) {
}
解决此问题的代码段:
func setCustomTypeData(set bson.M, customManagedType string) {
}