On Tue, Mar 22, 2022 at 6:01 AM tapi...@gmail.com <tapir....@gmail.com> wrote:
>
>
>
> On Monday, March 21, 2022 at 3:29:44 PM UTC+8 Henry wrote:
>>
>> Perhaps something like this?
>> ```go
>> func Convert[T, A any](src []T, converter func(T) A) []A {
>>         result := make([]A, len(src))
>>         for index, a := range src {
>>                 result[index] = converter(a)
>>         }
>>         return result
>> }
>> ```
>> See https://play.golang.com/p/rq89Wposc-D
>
>
> It might reduce some code (surely not eliminate), but it is very ungraceful.
>
> The current constraint design lacks of two abilities:
> 1. The ability of specifying a type argument must be an interface type.
> 2. The ability of specifying a type argument must not be an interface type.
>
> I except an implementation like
>
> func ConvertSlice[From implements(To), To interface](vs []From) []To {
>         var r = make([]To, len(vs))
>         for i := range vs {
>                 r[i] = vs[i]
>         }
>         return r
> }

I think it would be simpler to look for a way to express that one type
parameter is convertible to another type parameter, as I suggested
earlier.  I don't see a need to distinguish between interface and
non-interface types, or to introduce the notion of whether one type
parameter implements another.

Ian

-- 
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/CAOyqgcVOzBh%3DcUq86dQAKjmnpk02GwW0crswJq0KA1AjReBpBA%40mail.gmail.com.

Reply via email to