On Monday, November 13, 2017 at 10:33:55 AM UTC-5, Stephan Schweitzer wrote:
>
> I have a question about the following code-snippet:
>
> type I interface {
> DoSomething()
> }
>
> type F func()
>
> func (f F) DoSomething() {
> f()
> }
>
> func A() {
> fmt.Println("A")
> }
>
> func B() {
> fmt.Println("B")
> }
>
> func test() {
> var _a F = A
> var _b F = B
> var a I = _a
> var b I = _b
>
> if a == b { // 2. No compile error but panic
> // Code
> }
> }
>
> It seems to me, that I can break the type system with simple assignments.
>
Yes, interface is run time generic. It has both good points and bad points.
It is a trade-off. And there are many trade-offs in Go design.
> I do not propose that functions should be comparable. My questions are:
>
> - Why are interfaces comparable by default?
> - Why is it not possible to mark an interface as comparable resp. not
> comparable?
> - Why is it not possible do define user defined-equality?
> - What is the motivation in this language design?
>
> Thanks
> Stephan
>
--
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].
For more options, visit https://groups.google.com/d/optout.