英文:
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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论