That is true, it would be done that way, so not an issue. Sorry for the tangent.
I still don’t understand when ‘like T’ when T is a concrete type. It seems daunting, unless you use the containment as outlined previously - but a X containing T, is far different than X being a T, and I am not sure the semantics of the function will hold. Imagine a type Node struct { link *Node } then you have a linked list type LinkedList struct { head *node } with func (LinkedList *) Add(n like Node){ blah..} passing a struct MyNode { Node value int } will not work, because the reference passed to Add() points to inner instance. you would need to create: struct MyNode { Link *Node value int } and make link exported - meaning you need to understand the internal details of LinkedList in order to use it. At least I think so… :) > On Oct 18, 2018, at 10:03 AM, Burak Serdar <bser...@ieee.org> wrote: > > On Thu, Oct 18, 2018 at 8:53 AM Robert Engels <reng...@ix.netcom.com> wrote: >> >> >> >>> On Oct 18, 2018, at 9:41 AM, Burak Serdar <bser...@ieee.org> wrote: >>> >>> If X is a struct type, any type implementing all the methods of X and >>> containing all the fields of X can be substituted >> >> The above is the problem. This almost certainly requires dynamic access to >> fields, essentially making all method and field access dynamic, and I don’t >> think the Go performance hounds will go for it. I am > > I don't understand this concern either. > > func F(in like T) > > is a template. When the compiler instantiates F with a concrete type > T, a new copy of F is compiled using that type. There is no dynamic > access involved there, everything is statically resolved. > > not even certain it can be done without runtime reflection. >> >> But still a developer having to create a Bar with all of the exported >> methods and fields of Foo seems daunting. > > -- > 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.