If we remove slice from OP's example:

https://go2goplay.golang.org/p/KSJpRw1Lrmm

func Print[T Stringer](s T) {
    fmt.Print(s.String())
}

func Printi(s Stringer) {
    fmt.Print(s.String())
}

Are these two equivalent? When should one be chosen over the other?

On Thursday, 24 December 2020 at 04:41:16 UTC+8 Henrik Johansson wrote:

> Why will interfaces be more idiomatic once generics lands? It remains to 
> be seen I guess but I could very well see the other way become the idiom.
>
> On Wed, 23 Dec 2020, 21:20 wilk, <w...@flibuste.net> wrote:
>
>> On 23-12-2020, Ian Lance Taylor wrote:
>> > 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.
>>
>> I understand the differences. But i'm affraid someone who never used
>> Go before will use type parameters instead of interface which is more
>> idiomatic i think.
>> I mean it will be difficult to say, you could use type parameters but
>> you should use interface, or something like that...
>> I'm speaking about ease of learn Go2.
>>
>> -- 
>> wilk
>>
>> -- 
>> 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/rs08pp%24p8m%241%40ciao.gmane.io
>> .
>>
>

-- 
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/d044ae30-7254-4a86-9cba-1bc18eeb7fefn%40googlegroups.com.

Reply via email to