Golang函数返回值过多的问题如何解决

Golang函数返回值过多的问题如何解决 我是一名Go语言新手,为了解决“返回值过多”这个谜题已经筋疲力尽。请查看下面的代码。非常感谢任何帮助。(Go版本 go1.19 windows/amd64 Windows 10)

package main

import "fmt"

func main() {
    fmt.Println(Hellx())
}

func Hellx() {
    abc := "hello from depx"
    return abc
}
./prog.go:6:14: Hellx() (no value) used as value
./prog.go:11:9: too many return values
have (string)
want ()

Go构建失败。


更多关于Golang函数返回值过多的问题如何解决的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

Hellx 函数没有声明返回类型,但你却试图返回一个值。由于 abc 似乎是 string 类型,正确的做法是使用 string 作为返回类型。

更多关于Golang函数返回值过多的问题如何解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


哎呀!就像我说的,“我是个新手。” 感谢您花时间让这成为一个“教学时刻”。

这是一个典型的函数签名与返回值不匹配的问题。错误信息明确指出:函数声明为无返回值,但实际返回了字符串值。

问题在于函数 Hellx() 的签名被定义为 func Hellx(),这意味着它不应该返回任何值。然而在函数体内,你使用了 return abc 语句,其中 abc 是字符串类型。

以下是修正后的代码:

package main

import "fmt"

func main() {
    fmt.Println(Hellx())
}

func Hellx() string {
    abc := "hello from depx"
    return abc
}

关键修改:

  1. 将函数签名从 func Hellx() 改为 func Hellx() string
  2. 这样函数就能正确返回一个字符串值

如果函数确实不需要返回值,应该删除 return 语句:

package main

import "fmt"

func main() {
    Hellx()
}

func Hellx() {
    abc := "hello from depx"
    fmt.Println(abc)
}

在Go语言中,函数返回值类型必须在函数签名中明确声明。无返回值函数使用 func FunctionName(),有返回值则使用 func FunctionName() returnTypefunc FunctionName() (type1, type2) 用于多返回值。

回到顶部