On Wed, Dec 23, 2020 at 9:54 AM wilk <w...@flibuste.net> wrote:
>
> https://go2goplay.golang.org/p/fTW3hJYNgfU
>
> type Stringer interface {
>    String() string
> }
>
> Print[T Stringer](s []T)
>
> Print(s []Stringer)
>
> Both forms works.
> How to prevent double way to do the same things that can be confusing ?

Both forms work but they mean two different things.

Print(s []Stringer) takes a slice of the type Stringer.

Print[T Stringer](s []T) takes a slice of some type T, where T
implements Stringer.

For example, if MyInt implements Stringer, and I have a []MyInt, then
I can call Print[T Stringer](s []T) but I can't call Print(s
[]Stringer), because a []Stringer is not a []MyInt.

Ian

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAOyqgcUALDVBWJwhHYxT6T5%3Dz2tvSKp7yMy%3DF4HSJc_uTZZKGQ%40mail.gmail.com.

Reply via email to