首页  >  文章  >  后端开发  >  嵌入还是不嵌入:何时应该在 Go 中的结构嵌入中使用指针?

嵌入还是不嵌入:何时应该在 Go 中的结构嵌入中使用指针?

Patricia Arquette
Patricia Arquette原创
2024-10-30 18:01:30346浏览

 To Embed or Not to Embed: When Should You Use Pointers in Struct Embedding in Go?

Go 中的嵌入:指针与值

简介

在 Go 中将一个结构体嵌入到另一个结构体中时,可能会出现以下情况:想知道是使用指针还是值。本文探讨了差异以及每种方法何时适用。

指针嵌入

规范允许嵌入类型名称 T 或指向非接口的指针类型名称 *T,前提是 T 本身不是指针类型。

指针嵌入的优点

正如 Eric Urban (Hydrogen18) 在《Go 中的嵌入》中所解释的那样,” 通过指针嵌入具有以下几个优点:

  • 动态初始化:人们可以利用使用 NewX 习惯用法的函数通过指针返回结构以用于初始化目的。
  • 动态灵活性:嵌入指针允许在运行时更改嵌入实例,使多个渲染实例能够共享单个 Bitmap 实例。
  • 享元模式:嵌入指针支持享元模式,其中许多实例共享底层数据结构并显示出显着的内存节省。

但是,需要注意的是,嵌入指针将具有提升为嵌入类型的方法。此外,不允许将指针嵌入到指针或接口,因为这些类型没有方法。

以上是嵌入还是不嵌入:何时应该在 Go 中的结构嵌入中使用指针?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn