Hi @Scott. Thanks for the reply
1.
I was interested not in the type it self. Instead how to enumerate all the
underlying types that are implementing related `oneOf` interface. And how
to make it in general in runtime without static knowledge of that types.
E.g.
```
func ResolveUnderlyingInterfaceImplementations(interfaceType reflect.Type)
[]reflect.Type {
}
```
2.
* I understand this would not in help for the case solution still for the
general understanding: What exactly does it violate. Do you mean leak of
abstraction and backward capabilities?
* Could you get an example of workarounds you mentioned. Type switch is a
static definition approach. How might it help for enumerating types in
runtime.
* What is custom interfaces. Is it about just to redeclare the very same
interfaces in the client code base
Any way importing from proto compiled package some type as
```
type SomeMessage struct {
SomeField isPrivateOneOfInterface
}
```
how may one defined a function returning related value or a variable for
intermediate storage as
```
var someFieldValue: protos.isPrivateOneOfInterface
func ComposeSomeField() isPrivateOneOfInterface {
}
```
Could you please clarify the idea behind your workarounds
Thank you
четвер, 3 липня 2025 р. о 11:20:51 UTC+3 scott beeker пише:
> Use reflect.TypeOf() to get the concrete type of a oneOf interface value.
>
> Package-Private Interface:
>
>
> - Exposing it could be useful for function composition but risks
> violating the protobuf contract.
>
>
> - Workarounds like type switches or custom interfaces can achieve
> similar goals without breaking encapsulation.
>
>
> On Wednesday, July 2, 2025 at 9:28:45 AM UTC-7 X Dev wrote:
>
>> Hi guys
>>
>>
>> Please, in `golang` having a oneOf field how at runtime to enumerate the
>> types that fits the target interface (e.g. reflection)?
>>
>>
>> And a sibling question why actually the interface generated for the oneOf
>> purpose
>> is a package private. It is really logically not to expose the interface
>> content it self to restrict the types as described in a proto.
>> Still the interface it self would be useful for e.g. to define a function
>> that composes related result.
>>
>>
>> Thank you
>>
>
--
You received this message because you are subscribed to the Google Groups
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/protobuf/884ecf50-981b-4c58-94c6-3ecfd4856a38n%40googlegroups.com.