On 06/07/2010 07:44 PM, Jesse Phillips wrote:
On Sun, 06 Jun 2010 18:13:36 -0400, bearophile wrote:

At 9.30 you can see the switch used on a type type :-) You can see a
similar example here:
http://golang.org/src/pkg/exp/datafmt/datafmt.go Look for the line
switch t := fexpr.(type) {

...

Bye,
bearophile

That isn't a type type. Untested D code

void fun(T, U)(T op, U y) {

     switch(typeof(y)) {
          case "immutable(char)[]":
          case "int":
     }
}

Actually the uses are not equivalent. A closer example is:

class A {}

void main() {
    Object a = new A;
    switch (typeid(a).name) {
        case "object.Object":
            writeln("it's an object");
            break;
        case "test.A":
            writeln("yeah, it's an A");
            break;
        default:
            writeln("default: ", typeid(a).name);
            break;
    }
}

Go stores the dynamic types together with objects, so what looks like a simple typedef for int is in fact a full-fledged class with one data member. Those objects are stored on the garbage-collected heap.


Andrei

Reply via email to