有(string)想要()无法理解

huangapple go评论64阅读模式
英文:

have(string) want() Cannot understand

问题

我已经完成了Go课程,但是我不知道为什么这个函数不起作用,现在只是猜测。

错误信息:
./form.go:34:2: 返回的参数太多
有 (string)
期望 ()

func main() {
	name()
}

func name() {
	nameapi, err := http.Get("https://randomuser.me/api/")
	if err != nil {
		log.Fatal(err)
	}
	nameapiData, err := ioutil.ReadAll(nameapi.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(string(nameapiData)) // 如果不是字符串形式,是字节形式
	var responseObject Response
	json.Unmarshal(nameapiData, &responseObject)
	fmt.Println()
	fmt.Println()
	fmt.Println()

	fmt.Println(responseObject.Results[0].Name.First)
	//flname := responseObject.Results[0].Name.First + " " + response.Object.Results[0].Name.Last
	returnvalue := responseObject.Results[0].Name.First
	return returnvalue
}

type Response struct {
	Results []struct {
		Gender string `json:"gender"`
		Name   struct {
			Title string `json:"title"`
			First string `json:"first"`
			Last  string `json:"last"`
		} `json:"name"`
	}
}

添加了结构体。

英文:

I've completed the Go course but I cannot think as to why this function isn't working and I am just guessing at this point

Error message:
./form.go:34:2: too many arguments to return
have (string)
want ()

func main() {
	name()
}
 
func name() {
	nameapi, err := http.Get("https://randomuser.me/api/")
	if err != nil {
		log.Fatal(err)
	}
	nameapiData, err := ioutil.ReadAll(nameapi.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(string(nameapiData)) // If not in string, byte form
	var responseObject Response
	json.Unmarshal(nameapiData, &responseObject)
	fmt.Println()
	fmt.Println()
	fmt.Println()
 
	fmt.Println(responseObject.Results[0].Name.First)
	//flname := responseObject.Results[0].Name.First + " " + response.Object.Results[0].Name.Last
	returnvalue := responseObject.Results[0].Name.First
	return returnvalue
}

type Response struct {
	Results []struct {
		Gender string `json:"gender"`
		Name   struct {
			Title string `json:"title"`
			First string `json:"first"`
			Last  string `json:"last"`
		} `json:"name"`
	}
}

Edited to add struct.

答案1

得分: 5

你的函数声明如下:

func name()

这意味着它不接受任何参数并且不返回任何内容。

然而,你试图返回returnvalue,根据错误信息,它可能是一个字符串。

要么使用裸返回(naked return),要么指定函数必须返回一个字符串:

func name() string

我建议你参加一下Go语言之旅,这个问题在早期的内容中有所涉及。

英文:

Your function is declared as:

func name()

This means that it takes no arguments and returns nothing.

However, you are attempting to return returnvalue which is probably a string given the error.

Either use a naked return or specify that the function must return a string:

func name() string

I recommend you take the tour of Go, this is covered fairly early on.

huangapple
  • 本文由 发表于 2021年9月21日 16:22:42
  • 转载请务必保留本文链接:https://go.coder-hub.com/69265642.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定