Sorry, the last 4 lines should be: rs = (MyReader string)(rb) _, _ = rs.Read(s) rb = (MyReader []byte)(rs) _, _ = rb.Read(bs)
On Friday, September 11, 2020 at 11:00:12 PM UTC-4 Di gg wrote: > An example demostrating how to let Reader.Read support both string and > []byte parameters. > > package readonlybytes[T] ( > assert T.kind & (String | Slice) > ) > > package Reader[T] ( > assert readonlybytes[T] > ){ > type Reader interface { > Read(bytes T)(n int, err error) > } > } > > package MyReader[T]( > assert T.kind & (String | Slice) > ){ > type MyReader struct{} > > type (r *MyReader) Read(s T)(int, error) { > return len(s), nil > } > } > > // use it: > > var mrs MyReader string > var mrb MyReader []byte > > s := "Golang" > bs := make([]byte, 100) > > var rs Reader string = mrs > _, _ = rs.Read(s) > var rb Reader []byte = mrb > _, _ = rb.Read(bs) > > rb = (MyReader string)(rs) > _, _ = rb.Read(bs) > rs = (MyReader []byte)(rb) > _, _ = rs.Read(s) > > > > On Wednesday, August 26, 2020 at 1:16:49 PM UTC-4 Di gg wrote: > >> >> >> https://github.com/dotaheor/unify-Go-builtin-and-custom-generics/blob/master/use-package-as-gen.md >> >> This is an alternative generic idea set, which should be Go 1 compatible. >> It tries to use the same syntax forms as builtin generics. >> >> Different from the official draft, it adopts a from-top-to-bottom pattern, >> instead of the from-bottom-to-top pattern, to describe type parameters. >> For example, given a map type parameter M, its key and element types could >> be denoted as M.key and M.element, whereas to use a map type parameter, >> its key and elements must also present in the declaration signarure or >> constraint definitions. >> >> -- 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/89a51517-3b2b-46a9-ae72-70a01172bfccn%40googlegroups.com.