Go错误:最后一个函数参数必须有类型。

huangapple go评论106阅读模式
英文:

Go error: Final function parameter must have type

问题

我有一个关于我的函数的问题。我得到了一个

  1. 最终函数参数必须具有类型

对于这个方法

  1. func (s *BallotaApi) PostUser(c endpoints.Context,userReq Users) (userRes Users, error) {
  2. c.Debugf("在PostUser方法中")
  3. user := userManger.login(userReq)//返回一个Users类型
  4. 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

  1. final function parameter must have type

For this method

  1. func (s *BallotaApi) PostUser(c endpoints.Context,userReq Users) (userRes Users, error) {
  2. c.Debugf("in the PostUser method")
  3. user := userManger.login(userReq)//return a Users Type
  4. return user, nil

I read those threads but I can't figure out where I'm wrong. It looks like I declared everything.

can-you-declare-multiple-variables-at-once-in-go

go-function-declaration-syntax

答案1

得分: 10

如果你给返回参数命名,你必须给它们全部命名:

(userRes Users,err error)

这样,返回语句才能生效。

正如在函数类型中提到的:

> 在参数或结果列表中,名称(IdentifierList)要么全部存在,要么全部不存在

如果你尝试给其中一个命名而另一个不命名,就像这个例子中一样,你会得到以下错误:

  1. func a() (b int, error) {
  2. return 0, nil
  3. }
  4. # command-line-arguments
  5. /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

  1. (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:

  1. func a() (b int, error) {
  2. return 0, nil
  3. }
  4. # command-line-arguments
  5. /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.

huangapple
  • 本文由 发表于 2015年3月18日 19:27:16
  • 转载请务必保留本文链接:https://go.coder-hub.com/29120810.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定