On Thu, Sep 22, 2022 at 6:30 PM Robert Engels <reng...@ix.netcom.com> wrote:

> I would like to understand the reason to type assert but not cast? That is
> an OO design flaw.
>

You can only type-assert an interface. With type-assertion, you are either
checking if the underlying value of an interface is a specific type, or if
the value underlying the interface also implements a different set of
methods.

And Go isn't OO.


>
> On Sep 22, 2022, at 7:24 PM, burak serdar <bser...@computer.org> wrote:
>
> 
>
>
> On Thu, Sep 22, 2022 at 6:08 PM Robert Engels <reng...@ix.netcom.com>
> wrote:
>
>> 100% true. The difficulty when examining a “large” system is that it
>> becomes very difficult to understand the relationships. Documentation can
>> help but it is not a great substitute for automated tools.
>>
>> In Java - actually all of OO - type casting is severely frowned upon -
>> but it seems a lot of Go code does it liberally.
>>
>> If I designed a language today I would prohibit any type casts.  It is a
>> huge problem and points to insufficient design skills.
>
>
> Type-assertion is not exactly type-casting, though. And Go isn't exactly
> OO.
>
>
>>
>>
>> > On Sep 22, 2022, at 6:57 PM, Ian Davis <m...@iandavis.com> wrote:
>> >
>> > On Thu, 22 Sep 2022, at 11:27 PM, Rory Campbell-Lange wrote:
>> >
>> > I just wanted to respond to this part:
>> >
>> >> I suppose my question is (and forgive me if this is a terrifically
>> >> naive), how can one negotiate the go landscape of commonly used
>> modules
>> >> to re-utilise, where possible, a more commonly named interface
>> >> implementing "Speak()" or convertible to provide "Speak()"?
>> >>
>> >
>> > Generally, when writing Go, the consumer of the object defines the
>> interface it requires. So rather than you looking for interfaces that might
>> exist in the wild, it's better to focus on your application and its needs.
>> If you have a component that uses the Speak method on objects then define
>> that as an interface that your component can accept. Any other user of your
>> component can see that interface is needed and provide a suitable object
>> that implements it or create a shim to adapt one.
>> >
>> >
>> > --
>> > 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/1fb8a3c4-b135-4ab1-b969-d6f4c239b7d9%40www.fastmail.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 golang-nuts+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/golang-nuts/C0D7D21F-AC72-40E3-9DB9-A8678886CDF3%40ix.netcom.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 golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/CAMV2RqooGmOaXCGmriJ%2BDryYSSLNRmcrc9hfSTcWG-qPGAonxw%40mail.gmail.com
> <https://groups.google.com/d/msgid/golang-nuts/CAMV2RqooGmOaXCGmriJ%2BDryYSSLNRmcrc9hfSTcWG-qPGAonxw%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
>

-- 
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/CAMV2RqrouRZrUMPxwu16xCjS_L_0SQYgS8AaWJKEZ6JWwpFGUg%40mail.gmail.com.

Reply via email to