登录
首页 >  Golang >  Go问答

能否通过方法返回匿名结构?

来源:stackoverflow

时间:2024-02-19 10:42:23 252浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《能否通过方法返回匿名结构?》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

假设我有一个结构,例如:

type tmp struct {
    number int 
    text   string
}

是否有可能有一个返回匿名结构的方法?像这样:

func (t Tmp) MyStruct() struct {
    return struct {
        myVal       string
    }{
        "this is my val"
    }
}

我尝试了上面的代码,但出现错误。这可以通过其他方式实现吗?


解决方案


是的,这是可能的,但是您的函数签名在语法上不正确。 struct 是一个 keyword,而不是一个类型。

它是有效的:

func (t tmp) mystruct() struct {
    myval string
} {
    return struct {
        myval string
    }{
        "this is my val",
    }
}

测试它:

var t tmp
fmt.printf("%+v", t.mystruct())

输出将为(在 Go Playground 上尝试):

{myval:this is my val}

正如您所看到的,这不是很方便,因为在返回值时您必须重复 composite literal 中的结构体定义。为了避免这种情况,您可以使用 named result

func (t tmp) mystruct() (result struct {
    myval string
}) {
    result.myval = "this is my val"
    return
}

这输出相同。在 Go Playground 上试试这个。

但最简单的是定义一个你想要返回的类型,一切都会很简单:

type MS struct {
    myVal string
}

func (t Tmp) MyStruct() MS {
    return MS{myVal: "this is my val"}
}

拨打 Go Playground 试试这个。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《能否通过方法返回匿名结构?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>