It’s as simple as: var count = 1 var p = &count
func X() { total :=0 for i:=0; i <1000000;i++ { total = total + *p } } no ? > On Nov 30, 2018, at 11:48 AM, Mark Volkmann <r.mark.volkm...@gmail.com> wrote: > > I think I failed to come up with a good code example. But suppose I need to > do something with a pointer inside a loop that really does require > dereferencing it and the pointer never changes inside the loop. In that case > will the Go compiler optimize that so the dereference doesn't happen in each > loop iteration? > > On Fri, Nov 30, 2018 at 11:36 AM Jan Mercl <0xj...@gmail.com > <mailto:0xj...@gmail.com>> wrote: > > On Fri, Nov 30, 2018 at 6:16 PM Mark Volkmann <r.mark.volkm...@gmail.com > <mailto:r.mark.volkm...@gmail.com>> wrote: > > > Will the Go compiler optimize the pointer dereference so it doesn't happen > > in every loop iteration? If not, is it common practice to do that outside > > the loop like this? > > > > myValue := *myPtr > > for _, v := range values { > > fmt.Printf("%v %v\n", myValue, v) > > } > > There's no pointer dereference inside the loop. But there's an allocation > inside the loop, on every iteration, that puts a pointer to a copy of myValue > into an interface{} that's passed to fmt.Printf. The allocation can be > probably avoided: > > myValue := interface{}(*myPtr) > for _, v := range values { > fmt.Printf("%v %v\n", myValue, v) > } > > But the %v verb handle pointers in many cases well. If that holds for the > type of *myPtr then simply: > > for _, v := range values { > fmt.Printf("%v %v\n", myPtr, v) > } > > is what could be good enough. > > -- > -j > > > > -- > R. Mark Volkmann > Object Computing, Inc. > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com > <mailto:golang-nuts+unsubscr...@googlegroups.com>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.