Как решить проблему «слишком много аргументов для возврата» в Голанге?

18

В функции печати, которую я пишу, я пытаюсь вернуть значение на основе результата оператора switch; однако, я получаю ошибку слишком много аргументов для возврата.

Простите меня, если у этого вопроса есть простой ответ, но разве не важно, сколько аргументов имеет функция, и оно может вернуть только одну вещь? Или нужно вернуть одну вещь для каждого аргумента.

Вот мой код. Я получаю сообщение об ошибке на возвратной строке (слишком много аргументов для возврата). Как я могу исправить его так, чтобы он возвращал строку в оператор switch?

package bay

func Print(DATA []TD, include string, exclude []string, str string) {
    result := NBC(DATA, include, exclude, str)
    var sentAnal string
    switch result {
    case 1:
        sentAnal = "Strongly Negative"
    case 2:
        sentAnal = "Very Negative"
    case 3:
        sentAnal = "Negative"
    case 4:
        sentAnal = "Little Negative"
    case 5:
        sentAnal = "Neurtral"
    case 6:
        sentAnal = "Little Positive"
    case 7:
        sentAnal = "Positive"
    case 8:
        sentAnal = "More Positive"
    case 9:
        sentAnal = "Very Positive"
    case 10:
        sentAnal = "Strongly Positive"
    default:
        sentAnal = "Unknown"
    }
    return sentAnal
}
    
задан wordSmith 22.08.2014 в 22:40
источник
  • у вас опечатка в линии Нейртала должна быть «Нейтральная» :) –  fabrizioM 22.08.2014 в 22:48
  • Должно быть "Neuter" –  irbanana 06.07.2016 в 17:40

2 ответа

27

Вам нужно указать, что вы вернете после указания входных параметров, это не питон.

Это:

func Print(DATA []TD, include string, exclude []string, str string) {

Должно быть:

func Print(DATA []TD, include string, exclude []string, str string) string {

Рекомендуемые данные:

Или даже все эффективные варианты .

    
ответ дан Marc 22.08.2014 в 22:44
источник
  • вы правы. Я не думаю, что я полностью переключился на сознание голанов, когда писал это. Спасибо. –  wordSmith 22.08.2014 в 22:46
3

Подпись указанного вами метода не включает возвращаемое значение

func Print(DATA []TD, include string, exclude []string, str string) {

, если вы хотите вернуть строку, вам нужно добавить тип возвращаемого значения

func Print(DATA []TD, include string, exclude []string, str string) string {

Помните, что в GO вы можете возвращать несколько значений

func Print(DATA []TD, include string, exclude []string, str string) (string, string) {

Вы даже можете указать имя возвращаемого значения и указать его в своем коде

func Print(DATA []TD, include string, exclude []string, str string) (sentAnal string) {     

ответ дан fabrizioM 22.08.2014 в 22:47
источник