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

分配int指针值的简单方法?

宇文俊风
2023-03-14
问题内容

给定一个struct看起来像

type foo struct {
 i *int
}

如果要设置i为1,则必须

throwAway := 1
instance := foo { i: &throwAway }

有没有办法在一行中执行此操作而不必给我新i值它自己的名字(在这种情况下throwaway)?


问题答案:

如邮件列表中所述,您可以执行以下操作:

func intPtr(i int) *int {
    return &i
}

然后

instance := foo { i: intPtr(1) }

如果您必须经常这样做。intPtr内联(请参见go build -gcflags '-m'输出),因此它应该几乎没有性能损失。



 类似资料:
  • 在下面给出的代码中,我声明了一个指向int的指针,我们都知道memcpy返回一个指向目标字符串的空指针,所以如果ptr是指向int的指针,那么为什么printf(“%s”,ptr);是完全有效的,ptr毕竟不是指向char的指针。

  • 我想知道何时或是否必须删除此对象。下面是一个基本类对象Object.cpp的构造函数: 我知道在分配内存时,你应该在某个时候删除它,但是我在构造函数中分配了内存,并且想再次使用变量1和2,我什么时候删除它们?

  • 问题内容: 在Go中,如何将函数调用返回的值分配给指针? 考虑下面的示例,注意返回一个值(不是指针): 这些都失败了: 是否确实需要局部变量?那不会招致不必要的复制吗? 问题答案: 根据规范,必须使用局部变量。 要获取值的地址,调用函数必须将返回值复制到可寻址的内存中。有副本,但这不是多余的。 Go程序通常使用值。 有时在应用程序想要区分无值和其他时间值的情况下使用A。在SQL NULL和有效时间

  • 问题内容: 这是指向指针的指针 您何时真正使用此功能?您可以适当地提出一些可以更轻松地执行其他操作的方法,但这不是我要的。我真的想知道您将在生产中使用此功能吗? 问题答案: 将指针传递给某物的目的是是否 需要 修改指向的值。(我们也使用指针来避免在传递时复制大型数据结构,但这只是为了优化。) 像这个例子一样: 预期的输出(在Go Playground上尝试): 如果of的参数仅接收,则只能修改副本

  • 问题内容: 我有一个结构: 我在全球范围内存储一部分用户: 最后,http处理程序: 所以,为什么会这样,我的意思是我发送“加载”请求,它加载数据,设置为。但是在下一次调用“ newData”请求时,是? 以防万一,这里是: 编辑: 哪里来的: 问题答案: 这是因为您对 副本 进行操作,而不是对slice元素本身进行操作。 在函数中,make循环遍历的元素的副本,然后返回此副本的地址。因此,稍后您

  • 问题内容: 根据这个问题的回答 关于指针与接收器的值的规则是,可以在指针和值上调用值方法,但是只能在指针上调用指针方法 但实际上我可以对非指针值执行指针方法: 那么,这是怎么了?这是新功能吗?还是对问题的回答是错误的? 问题答案: 您正在对指针值调用“指针方法”。在表达式中: 是类型(非指针);由于该方法具有指针接收者,并且由于接收者值是非指针且可寻址,因此它是以下各项的简写形式: 这是在规范中: