GO语法错误:意外名称,期待)

时间:2016-03-22 11:18:49

标签: go

我最近开始学习 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的了解有限,我无法弄明白。

4 个答案:

答案 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) {

}