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.

Reply via email to