英文:
Go error: Final function parameter must have type
问题
我有一个关于我的函数的问题。我得到了一个
最终函数参数必须具有类型
对于这个方法
func (s *BallotaApi) PostUser(c endpoints.Context,userReq Users) (userRes Users, error) {
c.Debugf("在PostUser方法中")
user := userManger.login(userReq)//返回一个Users类型
return user, nil
我阅读了那些帖子,但我无法弄清楚我错在哪里。看起来我声明了一切。
can-you-declare-multiple-variables-at-once-in-go
go-function-declaration-syntax
英文:
I have an issue with my function. I'm getting a
final function parameter must have type
For this method
func (s *BallotaApi) PostUser(c endpoints.Context,userReq Users) (userRes Users, error) {
c.Debugf("in the PostUser method")
user := userManger.login(userReq)//return a Users Type
return user, nil
I read those threads but I can't figure out where I'm wrong. It looks like I declared everything.
答案1
得分: 10
如果你给返回参数命名,你必须给它们全部命名:
(userRes Users,err error)
这样,返回语句才能生效。
正如在函数类型中提到的:
> 在参数或结果列表中,名称(IdentifierList
)要么全部存在,要么全部不存在。
如果你尝试给其中一个命名而另一个不命名,就像这个例子中一样,你会得到以下错误:
func a() (b int, error) {
return 0, nil
}
# command-line-arguments
/tmp/sandbox170113103/main.go:9: final function parameter must have type
Dave C提醒我们:
> 命名返回值通常应该仅用于帮助生成更好/更清晰的godoc文档,或者在需要在延迟闭包中更改返回值时使用。除此之外,应该避免使用命名返回值。
英文:
If you are naming your return parameters, you must name all of them
(userRes Users, err error)
That way, return statements can apply.
As mentioned in Function type:
> Within a list of parameters or results, the names (IdentifierList
) must either all be present or all be absent.
If you try to name one and not the other, as in this example, you will get:
func a() (b int, error) {
return 0, nil
}
# command-line-arguments
/tmp/sandbox170113103/main.go:9: final function parameter must have type
Dave C reminds us that:
> Named returns should normally be limited to helping make better/clearer godoc documentation or when you need to change return values in a deferred closure.
Other than that they should be avoided.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论