4 ms·
It's used like this p := new(int) since you can't say p := &int{}
by 37ef_ced3 4y ago
It's used like this
p := new(int)
since you can't say
p := &int{}
- bilinguliar 4y agoIndeed, this may be the use case. I am curious how often you may need a pointer to an int.
- marwatk 4y agoIn things like rest APIs you need them quite a bit to distinguish between a value being the zero value and not present at all. Most libraries I've seen have an IntPointer or similar function exposed globally.
- bilinguliar 4y agoThis is true. In the case of REST, it is your “encoding/json” who will allocate for int pointer. So I do not see why new() is needed.
- 37ef_ced3 4y agoAre you seriously suggesting that the language should not have notation for allocating zeroed primitive types and receiving the address of the allocation? var ( p1 = new(int) p2 = new(*int) p3 = new(**int) p4 = new(complex64) p5 = new(complex128) ) I feel like you must be joking. Should we say var ( c complex128 p = &c ) every time?
- bilinguliar 4y agoIn five years, I needed to do the latter only once or twice because a library I was using demanded a pointer to a primitive. Forgive my arrogance, but why does one need a pointer to a zero-value primitive in Go? I sincerely believe there is a use case for it, but I never needed this.
- deleted 4y ago[deleted]