珍惜时间,勤奋学习!今天给大家带来《获取外部/父结构名称》,正文内容主要涉及到等等,如果你正在学习golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正
珍惜时间,勤奋学习!今天给大家带来《获取外部/父结构名称》,正文内容主要涉及到等等,如果你正在学习golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!
问题内容我面临一个golang初学者问题,我不知道如何正确解决它。你能帮我一下吗?
信息:尽管这违背了 go 的概念(不是试图成为一种 oop 语言),但我仍然想讨论一些解决方案。
我想知道接收者/子对象内的外部/父结构名称。请看下面的代码(演示:https://play.golang.org/p/h6darjqwids)
package main
import (
"fmt"
"reflect"
)
type Parent struct {
Id uint32
}
func (p *Parent) GetStructName() string {
return reflect.TypeOf(p).Elem().Name()
}
type Child struct {
Parent
}
func main() {
myChild := Child{}
fmt.Println(myChild.GetStructName()) // Gives "Parent" instead of "Child". How to get "Child"?
}
它显示“parent”,尽管该结构是“child”。谁能告诉我如何获得正确的结构名称?我在另一个 stackoverflow 主题中看到了一个“正确”工作的“解决方案”(go - 获取父结构),但我认为这不是一个好的解决方案。
GetStructName
是 Parent
类型的方法,而不是 Child
,而且 Golang 没有继承,而是有结构嵌入(也有接口嵌入),这有点像继承,但有一个关键区别:
这基本上意味着,当您调用 GetStructName
时,该方法的接收者是 Parent
(内部或嵌入类型),而不是 Child
。
这与典型的类继承根本不同,它解释了您所看到的行为。
有详细记录 here。
本篇关于《获取外部/父结构名称》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注编程网公众号!
--结束END--
本文标题: 获取外部/父结构名称
本文链接: https://lsjlt.com/news/596348.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0