Go 2, here we come!

Neia Neutuladh neia at ikeran.org
Sat Dec 1 04:16:10 UTC 2018


On Sat, 01 Dec 2018 03:32:29 +0000, Basile B. wrote:
> On Friday, 30 November 2018 at 02:12:23 UTC, Neia Neutuladh wrote:
>> * There is no function overloading. (Preexisting condition maintained.)
> 
> I wonder how do they do visitors in Go. If it's true that classes are
> not 100% necessary for that at least function overloads are needed to
> dispatch.

It's utterly straightforward:

    type Visitor interface {
        func VisitForeach(v *ForeachStmt)
        func VisitWhile(v *WhileStmt)
        func VisitIf(v *IfStmt)
    }

    func Visit(self *ForeachStmt)(Visitor visitor) {
        visitor.VisitForeach(self)
    }

The visitor pattern is a manual implementation of multiple dispatch, and 
this sort of name mangling is a manual implementation of function 
overloading.


More information about the Digitalmars-d mailing list