我对golang很陌生,并学习如何在嵌套的struct类型中消除引用。当我通常搜索嵌套结构时,他们会建议使用How to initialize a nested struct?中@OneOfOne建议的方法
然而,在工作中阅读代码基时,我注意到团队也使用嵌套指针。我搞不懂我什么时候该用这个。即。嵌套结构req Person与嵌套指针req *Person
示例
键入Person struct { Name string Age int8 }
类型args结构{ req *Person }
发布于 2021-11-07 08:37:39
结构属性(结构大小除外)中指针的一个常见用例是所述属性的可选性。虽然我不知道特定的用例,但我可以猜测它可能指某种可选的关系。
例如:具有Customer结构属性的LastOrder结构。由于客户可能还没有下过单次订单,所以将其保留为指针引用可能是有意义的,这样可以发出可能为零的信号。
另一个使用指针属性的用例是在类似图的或引用的数据结构中。考虑一下Person结构,它同时具有Mother和Father属性。如果将这些设置为Person类型,编译器将返回一个错误,因为生成的结构将无限递归。在这种情况下,这些也必须设置为指针。
希望答案能帮上忙。
发布于 2021-11-07 15:42:46
当您希望它是一个可选字段时,您应该使用指针(因为在初始化一个变量时,您可以简单地为它分配一个零指针),当一个大小很大并且希望提高应用程序的性能时,或者如果您想要一个指向相同类型的变量的字段,例如:
type Node struct {
Data int
Left *Node
Right *Node
}https://stackoverflow.com/questions/69870054
复制相似问题