Andrey,

Thank you for your help!! I've been analysing the output of my code, and it
seems that me and the compiler are "thinking" the same way.

I saw this options when I started learning Go, but I didn't realize it
could help me like that.
I will read more about escape analysis, thanks for pointing out the correct
search term.

Best Regards,
Bruno Novais

2018-03-04 18:37 GMT-03:00 andrey mirtchovski <mirtchov...@gmail.com>:

> Use 'go build -gcflags="-m"' to see what inlining actions the compiler
> takes. more here:
> https://github.com/golang/go/wiki/CompilerOptimizations#
> escape-analysis-and-inlining
>
> for example this https://play.golang.org/p/QyAauePKbn- will result in:
>
> $ go build -gcflags='-m' t.go
> # command-line-arguments
> ./t.go:9:6: can inline NewStuff
> ./t.go:14:28: inlining call to NewStuff
> ./t.go:14:28: NewStuff() escapes to heap
> ./t.go:14:12: main ... argument does not escape
> $
>
>
> multiple -m options may be supplied, although the extra output isn't
> especially user-friendly :)
>
> On Sun, Mar 4, 2018 at 6:57 AM, Bruno Novais <bruno.nov...@synng.com>
> wrote:
> > Hello Gophers!
> >
> > As you probably noticed by my question, I'm new to this awesome language
> > called Go (coming from C/C++). In C++ I rely a lot on constructor (copy)
> > elision. I think Go doesn't have this concept, but I would like to know
> what
> > happen when I do something like this:
> >
> > func NewStuff() Stuff {
> >   return Sutff{}
> > }
> >
> > What will happen in that case? Will it be store on the stack, and then
> > copied to the caller function? That will probably be inlined, so:
> >
> > func NewStuff() Stuff {
> >   // A lot of pre-processing that won't be inlined.
> >
> >   return Sutff{
> >     Value: var1,
> >     Another: var2,
> >     Etc: var3,
> >   }
> > }
> >
> > The returned value will be copied, or the compiler will optimize and
> change
> > the memory space of the caller function?
> >
> > Thank you!
> >
> > --
> > 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.
>

-- 
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