2015-03-18 2 views
2

У меня проблема с моей функцией. Я получаюОшибка Go: Конечный параметр функции должен иметь тип

final function parameter must have type 

Для этого метода

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 

Я читал эти темы, но я не могу понять, где я ошибаюсь. Похоже, я все объявил.

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

go-function-declaration-syntax

ответ

10

Если вы именования возвращаемых параметров, вы должны назвать все из них

(userRes Users, err error) 

Таким образом, return statements можно применить.

Как уже упоминалось в Function type:

Within a list of parameters or results, the names (IdentifierList) must either all be present or all be absent.

Если вы пытаетесь назвать одну, а не другой, а in this example, вы получите:

func a() (b int, error) { 
    return 0, nil 
} 
# command-line-arguments 
/tmp/sandbox170113103/main.go:9: final function parameter must have type 

Dave C напоминает нам, что:

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.

+0

C я пропустил это полностью ... спасибо – MIkCode

+0

[Именованные возвраты] (https://github.com/golang/go/wiki/CodeReviewComments#named-result-parameters), как правило, должны быть ограничены, чтобы помочь улучшить/улучшить godoc документацию или когда вам нужно изменить возвращаемые значения в отложенном закрытии. Помимо этого их следует избегать. –

+0

@DaveC Согласен. Я включил ваш комментарий в ответ для большей наглядности. – VonC

Смежные вопросы