As to _why_ this is the case, the generics proposal has a section about 
that:
https://go.googlesource.com/proposal/+/refs/heads/master/design/43651-type-parameters.md#permitting-constraints-as-ordinary-interface-types

On Wednesday, December 15, 2021 at 11:05:36 AM UTC-5 Jason Phillips wrote:

> @Leonard, type constraints can only be used as type parameters, using them 
> as normal interfaces is currently not allowed. See the notes in the draft 
> release notes[1] or the draft 1.18 spec[2].
>
> > Such interfaces may only be used as type constraints.
>
> > Interfaces that contain non-interface types, terms of the form ~T, or 
> unions may only be used as type constraints, or as elements of other 
> interfaces used as constraints. They cannot be the types of values or 
> variables, or components of other, non-interface types.
>
> @Kurtis, that issue is about embedded fields (fields without explicit 
> field names) that use type parameters.
>
> [1] - https://tip.golang.org/doc/go1.18
> [2] - https://tip.golang.org/ref/spec#Interface_types
>
> On Wednesday, December 15, 2021 at 10:47:20 AM UTC-5 kra...@skepticism.us 
> wrote:
>
>> This was asked 15 hours ago in the thread with the subject line "Go 1.18 
>> beta1: Embedding Type Parameter in struct definition is an error". :-)
>>
>> See https://golang.org/issue/49030.
>>
>> On Wed, Dec 15, 2021 at 3:24 AM Leonard Mittmann <leonard....@gmail.com> 
>> wrote:
>>
>>> I just learned that type constraints, which are defined as interfaces 
>>> are actually not usable in all the places "normal" interfaces can be used 
>>> in. E.g., why can a constraint interface not be uses as a struct type?
>>>
>>> Let's say I have the func `func Smallest[T constraints.Ordered](s []T) T`. 
>>> How do I write a table test for this func? Intuitively one would try to 
>>> store tests like this:
>>>
>>> tests := []struct {
>>>     Arr: []constraints.Ordered
>>>     Want: constraints.Ordered
>>> }{...}
>>>
>>> But this is not permitted. Am I missing something why this behavior is 
>>> should be considered good? If a type constraint is nothing like an 
>>> interface... okay, but why call it interface then?
>>>
>>> -- 
>>> 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...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/golang-nuts/53df110e-8f34-490a-9b77-610dacffdbcfn%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/golang-nuts/53df110e-8f34-490a-9b77-610dacffdbcfn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
>>
>> -- 
>> Kurtis Rader
>> Caretaker of the exceptional canines Junior and Hank
>>
>

-- 
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/0ae9aed8-72d4-42a2-acf0-16d0bd6b08ecn%40googlegroups.com.

Reply via email to