On Fri, Feb 9, 2024 at 1:37 PM Christopher C
<[email protected]> wrote:
>
> I have a base struct that implements an interface. There are multiple other
> structs that embed this base struct. I would like to pass the an interface
> into a function that can cast it as the base struct and call some functions
> tied to the base struct.
No, because type assertion tests the type of the object contained in
an interface, and that object is not the base object.
However, you can put whatever functions you are planning to call in
that base object into another interface, and call that:
type Base struct {...}
func (Base) A() {}
func (Base) B() {}
type HasA interface {
A()
}
func f(in HasA) {
type hasB interface {
B()
}
b,ok:=in.(hasB)
if ok {
b.B()
}
}
>
> Something like this...
> https://go.dev/play/p/DUzXr31s8Pn
>
> --
> 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 [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/1ded992c-3f90-4c30-99a5-532e573cf16fn%40googlegroups.com.
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/CAMV2Rqr2fhqDEOxD3jhe8U1fZ1GFvNoNRHanpAykfa8UVfFtyw%40mail.gmail.com.