In that case, for a nested struct from top to bottom, all the values are 
copies as values, correct? i.e, string, int, float, array etc will be 
copied by value & map, slice, channel etc will be copied as pointers if 
they are initialized? 

https://play.golang.org/p/NzH8LVyQ0rp code works as I wanted. Generally, 
what practice should I follow? If I want a shared variable, should I have 
to keep all the variables as pointers like in the example 
(https://play.golang.org/p/NzH8LVyQ0rp) or like the way I showed earlier?

On Tuesday, March 6, 2018 at 3:40:47 PM UTC-5, Burak Serdar wrote:
>
> On Tue, Mar 6, 2018 at 1:23 PM,  <bharat...@gmail.com <javascript:>> 
> wrote: 
> > go version 1.10 
> > 
> > 
> > Operating system and processor architecture 
> > 
> > GOHOSTARCH="amd64" 
> > GOHOSTOS="darwin" 
> > However, this happens in play.golang.org env as well. 
> > 
> > 
> > Checkout the code. 
> > 
> > https://play.golang.org/p/v6u7R_nbGRp 
>
> doc1 := Document{} 
>  // Here, doc1.Data is nil 
>
> ds := DataStore{Doc: doc1} 
>  // Here, ds.Doc has a copy of doc1, and ds.Doc.Data is nil 
>
> ds.Doc.Data = DocData{} 
>  // Here, ds.Doc.Data is initialized, but not doc1.Data, because 
> ds.Doc is a copy of doc1 
>
>
> On the other hand: 
>
> doc2 := Document{Data: DocData{}} 
> // Here, doc2.Data is initialized to an empty map 
>   ds2 := DataStore{Doc: doc2} 
> // And here, ds2.Doc is a copy of doc2, which contains a reference to 
> that empty map. The underlying maps are shared. 
>
>
>
> > 
> > 
> > In the example, if the struct (Document) is not initialized at first, 
> there 
> > is no place holder for future values pointing to same object. Is this 
> > intended? 
> > 
> > -- 
> > 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...@googlegroups.com <javascript:>. 
> > For more options, visit 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.

Reply via email to