github.com/xushiwei/go@v0.0.0-20130601165731-2b9d83f45bc9/test/fixedbugs/bug054.go (about)

     1  // run
     2  
     3  // Copyright 2009 The Go Authors. All rights reserved.
     4  // Use of this source code is governed by a BSD-style
     5  // license that can be found in the LICENSE file.
     6  
     7  package main
     8  
     9  type Element interface {
    10  }
    11  
    12  type Vector struct {
    13  	elem []Element;
    14  }
    15  
    16  func (v *Vector) At(i int) Element {
    17  	return v.elem[i];
    18  }
    19  
    20  type TStruct struct {
    21  	name string;
    22  	fields *Vector;
    23  }
    24  
    25  func (s *TStruct) field(i int) *TStruct {
    26  	return s.fields.At(i).(*TStruct);
    27  }
    28  
    29  func main() {
    30  	v := new(Vector);
    31  	v.elem = make([]Element, 10);
    32  	t := new(TStruct);
    33  	t.name = "hi";
    34  	v.elem[0] = t;
    35  	s := new(TStruct);
    36  	s.name = "foo";
    37  	s.fields = v;
    38  	if s.field(0).name != "hi" {
    39  		panic("bad name")
    40  	}
    41  }