登录
首页 >  Golang >  Go问答

获取子结构名称的方法

来源:stackoverflow

时间:2024-02-06 13:27:19 254浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《获取子结构名称的方法》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

如何在父函数中获取子结构名称?我的在线代码在这里: https://go.dev/play/p/04w5mk0aagl

type IParent interface {
    TypeName() string
}

type Parent struct{ IParent }

func (p *Parent) TypeName() string {

    if t := reflect.TypeOf(p); t.Kind() == reflect.Ptr {
        return "*" + t.Elem().Name()
    } else {
        return t.Name()
    }
}

type Child struct {
    *Parent
}

func main() {
    var e IParent = &Child{}

    // output: TypeName: *Parent.
    // expected: TypeName: *Child.
    val := e.TypeName()
    fmt.Printf("TypeName: %v.\n", val)
}

输出是typename: *parent.,我的预期输出是typename: *child.,有人可以给我一些建议吗?


正确答案


我认为你错过了 go 中结构的概念。

type Child struct {
    *Parent
}

func main() {
    var e IParent = &Child{}

上面,显然如果你定义了 struct child 并以 parent 作为结构的内容,但之后你声明了 child 并输出内容。在这里,结果很明显是*parent。

本篇关于《获取子结构名称的方法》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

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