I liked the 'any' idea. It always felt to me a bit odd/not so clear 
interface{} means anything.

Still, interfaces with type parameters for non generic code seems a mix of 
behaviour and implementation description.

In all, looking forward to see these changes implemented to try them out :)

On Monday, 24 August 2020 at 08:09:15 UTC+2 rog wrote:

> On Mon, 24 Aug 2020 at 06:35, Denis Cheremisov <denis.ch...@gmail.com> 
> wrote:
>
>> I probably didn't read what you have wrote in the first message carefuly 
>> enough. Does it mean something like that will work
>>
>>     type SomeTypes interface {
>>     type int, float32, float64
>>     }
>>
>>     func Min[T SomeTypes](x, y T) T {
>>         switch T {
>>         case int:
>>             if x < y {
>>                 return x
>>             }
>>             return y
>>         case float32:
>>             return math.Min(float64(x), float64(y))
>>         case float64:
>>             return math.Min(x, y)
>>         }
>>     }
>>
>  
> This was discussed above.
>
> I don't believe you can do that. I didn't see any suggestion that knowing 
> the type implies the ability
> to convert from the generic type to the known underlying type.
>
>>
>> Would something like below work as well?
>>
>>     type Compare[T any] interface {
>>         Compare(x, y T) int
>>     }
>>
>>     type CompareConstraints[T any] {
>>         type int, int8, …, float64, string, Compare[T]
>>     }
>>
>>     func Min[T CompareConstraints]Min(x, y T) bool {
>>         switch T {
>>         case int:
>>             …
>>         …
>>         case Compare[T]:
>>             return x.Compare(y) < 0
>>         }
>>     }
>>
>
> No. As proposed, the type switch doesn't change anything about the type T.
>
> Also, AIUI that type list wouldn't be very useful in practice, because 
> using that interface type in the type list would only allow types whose 
> underlying type is exactly Compare[T], which doesn't include any 
> non-interface types or interface types that have more methods than just 
> Compare.
>
>   cheers,
>     rog.
>
>

-- 
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/64cb4261-5567-451e-b98a-5792b3adc36fn%40googlegroups.com.

Reply via email to