在我写的打印函数中,我试图根据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
}
答案 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 问题,但可能对其他人有帮助。