简单的方法来分配int指针的值是什么?

huangapple go评论84阅读模式
英文:

Easy way to assign int pointer values?

问题

给定一个类似的struct结构:

type foo struct {
 i *int
}

如果我想将i设置为1,我必须这样做:

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

有没有一种方法可以在一行内完成这个操作,而不必给新的i值(在这种情况下是throwaway)命名?

英文:

Given a struct that looks like

type foo struct {
 i *int
}

if I want to set i to 1, I must

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

Is there any way to do this in a single line without having to give my new i value it's own name (in this case throwaway)?

答案1

得分: 10

如在邮件列表中指出,你可以这样做:

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

// 然后
instance := foo{i: intPtr(1)}

如果你需要经常这样做的话。intPtr会被内联(参见go build -gcflags '-m'的输出),所以几乎没有性能损失。

英文:

As pointed in the mailing list, you can just do this:

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

and then

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

if you have to do it often. intPtr gets inlined (see go build -gcflags '-m' output), so it should have next to no performance penalty.

答案2

得分: 5

这不可能在一行代码中完成。

英文:

No this is not possible to do in one line.

huangapple
  • 本文由 发表于 2015年4月9日 00:48:51
  • 转载请务必保留本文链接:https://go.coder-hub.com/29520676.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定