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.

Reply via email to