英文:
GO lang syntax error: unexpected name, expecting )
问题
我最近开始学习Go语言。我花了几个小时,但是无法弄清楚问题出在哪里。
以下是我的代码:
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)
b, err := json.Marshal(response)
if err != nil {
http.Error(w, "Internal Error", http.StatusInternalServerError)
return
}
fmt.Fprintf(w, string(b[:]))
}
出现了以下错误:语法错误:意外的名称,期望是")"。这可能很简单,但是由于我在Go语言方面的知识有限,我无法弄清楚。
英文:
I have started learning Go lang recently.I have spend couple of hours but can't figure out what's wrong with this.
Here is my code:
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
}
// compile time error on below line
response := models.UserPrefer(cc, userID int64, key string, value string)
b, err := json.Marshal(response)
if err != nil {
http.Error(w, "Internal Error", http.StatusInternalServerError)
return
}
fmt.Fprintf(w, string(b[:]))
}
Following error is throw syntax error: unexpected name, expecting )
it's probably simple, but with my limited knowledge in Go lang I can't figure out.
答案1
得分: 10
你在调用方法时传递了类型
使用
response := models.UserPrefer(cc, userID, key, value)
而不是
response := models.UserPrefer(cc, userID int64, key string, value string)
英文:
You are passing types when calling methods
Use
response :=models.UserPrefer(cc, userID, key, value)
instead of
response :=models.UserPrefer(cc, userID int64, key string, value string)
答案2
得分: 2
在调用函数时,只需传递参数即可,无需传递参数的类型。
英文:
While calling a function just pass the parameter. You do not need to pass the type of parameter.
答案3
得分: 1
我在实例化类型时忘记加上冒号时,遇到了一个非常类似的错误。我创建了一个最小的示例来说明。
> prog.go:11:12: 语法错误:意外的文字“Sedimentary”,期望逗号或}
在这个示例中,我只需要在属性名后面添加一个冒号。
r := Rock{
RockType: "Sedimentary", // 缺少了“:”,在上面的go play链接中有
}
英文:
I got an error very similar to this when I forgot to put in a colon while instantiating a type. Created a minimum example to illustrate.
> prog.go:11:12: syntax error: unexpected literal "Sedimentary", expecting comma or }
https://play.golang.org/p/QKmcOHnsF7C
In this example, I just needed to add a colon after the attribute name.
r := Rock{
RockType: "Sedimentary", // the ":" was missing, and is in the go play link above
}
答案4
得分: 1
我之前遇到这个错误是因为我把一个保留字
作为方法的参数名使用了。
引发错误的代码片段:
func setCustomTypeData(set bson.M, type string) {
}
修复这个问题的代码片段:
func setCustomTypeData(set bson.M, customManagedType string) {
}
英文:
I was getting this error because I was using a reserved
keyword as an argument name for a method.
Code snippet that was throwing this error:
func setCustomTypeData(set bson.M, type string) {
}
Code snippet that fixed this issue:
func setCustomTypeData(set bson.M, customManagedType string) {
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论