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 回复

谢谢!

更多关于Golang中如何返回struct结构体的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


从编译错误中可以清楚地看出:

  1. ./prog.go:14:6: Head字面量已计算但未使用
  2. ./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"} 这一行创建了结构体但没有做任何事,函数直接返回,导致没有返回值。

回到顶部