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.