当前位置: 首页 > 面试题库 >

何时不使用指针构造变量中的文字

盛跃
2023-03-14
问题内容

按照Go 导览第28

页和第53页

它们显示了一个变量,该变量是指向结构文字的指针。为什么这不是默认行为?我不熟悉C,因此很难将其包裹住。我唯一看到的是使用指针可能不是更有利的时候是结构文字是唯一的,并且不会在其余程序中使用,因此您希望尽快对其进行垃圾回收。我什至不确定像Go这样的现代语言是否也可以那样工作。

我的问题是这个。何时应将指向结构文字的指针分配给变量,何时应分配结构文字本身?

谢谢。


问题答案:

在以下情况下,使用指针而不只是结构文字会有所帮助

  • 结构很大,您将其传递
  • 您想要共享它,那就是所有修改都会影响您的结构,而不是影响副本

在其他情况下,只需使用struct文字就可以了。对于小型结构,您可以像使用an int或an
来思考问题*int:多数情况下,int很好,但有时您传递一个指针,以便接收方可以修改int变量。

在您链接到的Go游览练习中,Vertex结构很小,并且语义上与任何数字都差不多。在我看来,直接将其用作struct并Scaled在#53中定义如下函数会很好:

func (v Vertex) Scaled(f float64) Vertex {
    v.X = v.X * f
    v.Y = v.Y * f
    return v
}

因为有

v2 := v1.Scaled(5)

会像

var f2 float32 = f1 * 5

创建一个新的float

这类似于处理标准Time结构(此处定义)的方式,该结构通常保存在type
Time而非not 变量中*Time

但是没有明确的规则,并且根据用途,我很可能会同时保留ScaleScaled



 类似资料:
  • 主要内容:定义指针变量,通过指针变量取得数据,关于 * 和 & 的谜题,对星号*的总结数据在内存中的地址也称为 指针,如果一个变量存储了一份数据的指针,我们就称它为 指针变量。 在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。指针变量的值就是某份数据的地址,这样的一份数据可以是数组、字符串、函数,也可以是另外的一个普通变量或指针变量。 现在假设有一个 char 类型的变量 c,它存储了字符 'K'(ASCII码为十进制数 75),并占用了地址为 0X11A 的内存(地址

  • 问题内容: 这就是我要完成的工作: 基本上,我想使用uri确定使用哪个模板。目前,我收到一个错误,提示我未理解pageName。有什么不同的方式可以做到这一点?谢谢! 问题答案: 可以是接受路由参数对象的函数:

  • 问题内容: 所以我有一个指令,在创建时应该取一个值。让我们将指令称为。要使用它并将值传递给它,您可以这样: 我正在使用TypeScript,所以我想拥有没有类的类,因此我将其绑定到控制器。 所以问题是我需要使用,因为在构造函数中(我需要的地方……)传递给指令的值(“我将是未定义的”)尚未设置。 有没有更好的方法可以做到这一点而无需监视? 问题答案: 有一个可行的例子 我只是稍微调整了一下代码-即可

  • 主要内容:指针变量,使用指针检索数据的值,将指针作为参数传递给函数,使用指针访问数组元素,编译不安全代码为了保持类型的安全性,默认情况下 C# 是不支持指针的,但是如果使用 unsafe 关键字来修饰类或类中的成员,这样的类或类中成员就会被视为不安全代码,C# 允许在不安全代码中使用指针变量。在公共语言运行时 (CLR) 中,不安全代码是指无法验证的代码,不安全代码不一定是危险的,只是 CLR 无法验证该代码的安全性。因此 CLR 仅会执行信任程序集中包含的不安全代码。 指针变量 在 C# 中,

  • 本文向大家介绍详解C++中的指针结构体数组以及指向结构体变量的指针,包括了详解C++中的指针结构体数组以及指向结构体变量的指针的使用技巧和注意事项,需要的朋友参考一下 C++结构体数组 一个结构体变量中可以存放一组数据(如一个学生的学号、姓名、成绩等数据)。如果有10个学生的数据需要参加运算,显然应该用数组,这就是结构体数组。结构体数组与以前介绍过的数值型数组的不同之处在于:每个数组元素都是一个结

  • 问题内容: 我习惯于进行Java编程,在编程时,您无需真正考虑指针。但是,此刻我正在用C ++编写程序。在创建具有其他类成员的类时,何时应该使用指针,何时不应该使用指针?例如,什么时候我想这样做: 与此相反: 问题答案: 首先避免指针。 在以下情况下使用它们: 您想使用Pimpl习惯用法或抽象工厂。 该实例实际上是由程序的其他部分管理的,而该类仅需要能够访问它。 您想推迟对象的构建(即,您想 在