With a type:
type A struct {
B int, C *int
}
How do I initialise a pointer member to a non-zero value inline, without creating temporaries?
a := A{
B: 42,
C: ?,
}
With a type:
type A struct {
B int, C *int
}
How do I initialise a pointer member to a non-zero value inline, without creating temporaries?
a := A{
B: 42,
C: ?,
}
For the specific example you've given you are limited in what you can do without introducing additional statements.
If you want C
to point at an initialised integer variable, you will need an additional statement to define that variable since you can't take the address of an integer literal (i.e. &42
would be an error).
If you just want to initialise C
as a pointer to a new zero value, you are in luck though and can set it to new(int)
.
If you were instead dealing with a different type that had an initialiser syntax, you would also been in luck. For example, if C
was a pointer to a structure, you could initialise it to &TheStruct{...}
.
If none of these are appropriate, and you are really only after code clarity for initialising *int
variables, a helper function might fit your requirements. For example:
func makeIntPointer(v int) *int {
return &v
}