Golang中如何返回struct结构体
Golang中如何返回struct结构体 我正在尝试从另一个Go文件中获取多个标题和内容。为了做到这一点,我首先想了解如何获取结构体。但我还没弄明白。
以下代码按预期工作
type Head struct{ Title, Content string }
func main() {
fmt.Println(Head{"Your title page,", "A classic lorem ipsum content"})
}
当把这个移到另一个函数时无法正常工作
type Head struct{ Title, Content string }
func main() {
fmt.Println(Title())
}
func Title() interface{} {
Head{"Your title page", "A classic lorem ipsum content"}
return
}
返回简单字符串时可以正常工作
func main() {
fmt.Println(Title())
}
func Title() string {
return ("test")
}
我哪里做错了?我以前没有使用过结构体。
更多关于Golang中如何返回struct结构体的实战教程也可以访问 https://www.itying.com/category-94-b0.html
3 回复
从编译错误中可以清楚地看出:
- ./prog.go:14:6: Head字面量已计算但未使用
- ./prog.go:15:2: 返回值参数不足 实际 () 需要 (interface {})
只需返回你创建的内容:
return Head{"Your title page", "A classic lorem ipsum content"}
返回结构体类型会更好:
func Title() Head {
return Head{"Your title page", "A classic lorem ipsum content"}
}
在您的代码中,问题在于 Title() 函数没有正确返回结构体。在 Go 中,函数必须明确返回一个值。在您的示例中,Title() 函数创建了一个 Head 结构体实例,但没有将其返回。
以下是修正后的代码:
type Head struct{ Title, Content string }
func main() {
fmt.Println(Title())
}
func Title() Head {
return Head{"Your title page", "A classic lorem ipsum content"}
}
或者,如果您需要返回 interface{} 类型:
func Title() interface{} {
return Head{"Your title page", "A classic lorem ipsum content"}
}
关键点:
- 在 Go 中,函数必须使用
return语句明确返回一个值 - 您可以直接返回结构体实例,无需先声明变量
- 如果函数声明了返回类型,就必须返回该类型的值
另一个常见写法是使用命名返回值:
func Title() Head {
h := Head{"Your title page", "A classic lorem ipsum content"}
return h
}
在您的原始代码中,Head{"Your title page", "A classic lorem ipsum content"} 这一行创建了结构体但没有做任何事,函数直接返回,导致没有返回值。

