如何解决"太多的论点要回归" Golang的问题?

时间:2014-08-22 20:40:05

标签: go

在我写的打印函数中,我试图根据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
}

3 个答案:

答案 0 :(得分:38)

您需要指定在指定输入参数后将返回的内容,这不是python。

此:

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

应该是:

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

推荐读物:

甚至所有effective go

答案 1 :(得分:3)

您指定的方法的签名不包含返回值

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

如果要返回字符串,则需要添加返回值的类型

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

请记住,你可以返回多个值

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

您甚至可以为返回值指定名称并在代码中引用它

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

答案 2 :(得分:1)

如果您将返回类型提到为 string,那么您应该在 return 语句中使用 fmt.Sprintf,而不是 fmt.Printf

因为 fmt.Printf 的返回类型是 (n int, err error),而 fmt.Sprintf 的返回类型是 string

它不能回答 OP 问题,但可能对其他人有帮助。