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/cd343e62-925f-4185-af3d-8c04c16aefbfn%40googlegroups.com.