Thanks. I was about to reply with why I think we need it and then realized
that my case does not justify it.

All I needed is a constraint that restricts to a set of known types which
is available using the or op.

On Wed, Nov 13, 2024, 19:23 Ian Lance Taylor <i...@golang.org> wrote:

> On Wed, Nov 13, 2024 at 8:59 AM Elad Gavra <gav...@gmail.com> wrote:
> >
> > I would like to create a non-pointer constraint for a generic function.
> > For example:
> > ```
> > func F[T NonPtr](p T) {
> > // do something with p
> > }
> > ```
> > Such that
> > ```
> > F(MyStruct{}) // allowed
> > F(&MyStruct{}) // disallowed, compile time
> > ```
> > I'm aiming to ensure, in compile-time, that a generic function, which is
> intended to work with values only, cannot be misused by passing in a
> pointer. (I can provide more context on my use case if needed.) While this
> could be enforced with a custom linter, I feel this should be a built-in
> capability of the language. From what I understand, though, this feature
> isn’t currently supported.
> >
> > What do you think?
>
> In general Go generics allow the program to say that the type must
> have a certain structure (see
> https://go.dev/blog/deconstructing-type-parameters) but Go does not
> permit the program to say that the type must _not_ have a certain
> structure.  In general this hasn't been a big problem.  It is of
> course possible to dynamically reject type structure at run time using
> the reflect package, but there is no way to do it statically.
>
> Personally I mostly think that is OK.  One of the guidelines that Go
> follows is to encourage people to write code rather than write types.
> To me this falls into writing types.
>
> That said, if we do decide to add facilities for rejecting type
> structure, I don't think we should just add something to say "no
> pointers, please."  We should have a more general approach that also
> allows us to say things like "no structs" or "no interface types."
>
> 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 visit 
https://groups.google.com/d/msgid/golang-nuts/CAMwNhA%3DLRoe5LqU8N%3D-BYH9Og782CzXAE2WZPO_VNg0rBqx8CQ%40mail.gmail.com.

Reply via email to