The error message gives you a reason - there is no single underlying type. This works:
type B []byte func Bar[T []byte|B](s T) { for range s {} } But yes, your example arguably should be made to work eventually. I would suggest filing an issue about that. On Fri, Nov 12, 2021 at 4:47 PM tapi...@gmail.com <tapir....@gmail.com> wrote: > This one doesn't compile either. > So the range operation doesn't support values of parameter types? > > type MyByte byte > > func Bar[T []byte|[]MyByte](s T) { > for range s {} // cannot range over s (variable of type T constrained > by []byte|[]MyByte) (type set has no single underlying > } > > On Friday, November 12, 2021 at 11:40:53 PM UTC+8 > axel.wa...@googlemail.com wrote: > >> On Fri, Nov 12, 2021 at 4:29 PM tapi...@gmail.com <tapi...@gmail.com> >> wrote: >> >>> On Friday, November 12, 2021 at 11:10:17 PM UTC+8 >>> axel.wa...@googlemail.com wrote: >>> >>>> `range s` works differently for string and []byte. In the former case >>>> it iterates over utf8-encoded unicode codepoints, in the latter it iterates >>>> over bytes. >>>> >>> >>> It is true, but why it matters here? >>> >> >> Because it makes `range` different operations for the purposes of >> determining the allowed operations on a type-parameter. >> >> >>> >>> >>>> >>>> On Fri, Nov 12, 2021 at 3:18 PM tapi...@gmail.com <tapi...@gmail.com> >>>> wrote: >>>> >>>>> >>>>> func Bar[T []byte|string](s T) bool { >>>>> for _, v := range s { // cannot range over s (variable of type T >>>>> constrained by []byte|string) (T has no structural type) >>>>> if v > 100 { >>>>> return true >>>>> } >>>>> } >>>>> return false >>>>> } >>>>> >>>>> The message is quite confusing. >>>>> >>>>> -- >>>>> 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...@googlegroups.com. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/golang-nuts/44b5f535-adc8-4049-ba41-638f90becc3cn%40googlegroups.com >>>>> <https://groups.google.com/d/msgid/golang-nuts/44b5f535-adc8-4049-ba41-638f90becc3cn%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> -- >>> 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...@googlegroups.com. >>> >> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/golang-nuts/abd83194-8198-40e8-ad12-82953f85fba5n%40googlegroups.com >>> <https://groups.google.com/d/msgid/golang-nuts/abd83194-8198-40e8-ad12-82953f85fba5n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > 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/42054eee-a9df-40d1-b148-4e5ead89ee0cn%40googlegroups.com > <https://groups.google.com/d/msgid/golang-nuts/42054eee-a9df-40d1-b148-4e5ead89ee0cn%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- 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/CAEkBMfGfo42fR7_JONduVEPX6yA5-A7-beMutne6hWoLLFK_2g%40mail.gmail.com.